16.2.3.7在 Java中使用 MySQL 和memcached

Java中的类为memcached 实例com.danga.MemCached提供了一个本地接口。您可以从 https://github.com/gwhalin/Memcached-Java-Client/downloads获取客户端。Java 类使用与 兼容的散列 ,因此您可以混合和匹配访问相同memcached实例的 Java 和应用程序。Java 和其他接口之间的序列化不兼容。如果这是一个问题,请使用 JSON 或类似的非二进制序列化格式。 libmemcachedlibmemcached

在大多数系统上,您可以下载软件包并 jar直接使用。

要使用该com.danga.MemCached接口,您需要创建一个MemCachedClient实例,然后通过配置 SockIOPool. 通过池规范,您可以设置服务器列表、权重和连接参数,以优化客户端与您配置的memcached实例之间的连接。

通常,您可以 在单个类中配置一次 memcached接口,然后在应用程序的其余部分中使用该接口。

例如,要创建一个基本界面,首先配置 MemCachedClient和基本 SockIOPool设置:

public class MyClass {

    protected static MemCachedClient mcc = new MemCachedClient();

    static {

        String[] servers =
            {
                "localhost:11211",
            };

        Integer[] weights = { 1 };

        SockIOPool pool = SockIOPool.getInstance();

        pool.setServers( servers );
        pool.setWeights( weights );

在上面的示例中,服务器列表是通过创建要使用的memcached实例 数组来配置的。然后,您可以为每个服务器配置单独的权重。

连接的其余属性是可选的,但您可以通过设置池参数来设置连接数(初始连接数、最小连接数、最大连接数和空闲超时):

pool.setInitConn( 5 );
pool.setMinConn( 5 );
pool.setMaxConn( 250 );
pool.setMaxIdle( 1000 * 60 * 60 * 6

配置参数后,初始化连接池:

pool.initialize();

池和与您的 memcached实例的连接现在应该可以使用了。

要设置用于选择存储给定密钥时使用的服务器的哈希算法,请使用 pool.setHashingAlg()

pool.setHashingAlg( SockIOPool.NEW_COMPAT_HASH );

有效值是NEW_COMPAT_HASHOLD_COMPAT_HASH也是 NATIVE_HASH基本模数哈希算法。对于一致的哈希算法,请使用 CONSISTENT_HASH. 这些常量相当于 .h 中相应的哈希设置 libmemcached

下表概述了 Memcached 接口规范 com.danga.MemCached中的 Java 方法和等效的通用方法。

方法com.danga.MemCached_ 等效的通用方法
get() 通用get()的。
getMulti(keys) 获取 multiple 的值keys,返回信息作为哈希映射, java.lang.String用于键和 java.lang.Object相应的值。
set() 通用set()的。
add() 通用add()的。
replace() 通用replace()的。
delete() 通用delete()的。
incr() 通用incr()的。
decr() 通用decr()的。