一、JAVA访问memcache之Xmemcached

Xmemcached是采用nio连接,并发效率会高,大都采用该客户端。

1、引入Xmemcached

 <dependency>
      <groupId>com.googlecode.xmemcached</groupId>
      <artifactId>xmemcached</artifactId>
      <version>2.0.0</version>
 </dependency>

2、配置客户端(结合Spring,factorybean是xmemecached内部提供的)

<bean name="memcachedClient" >
    <!-- nio connection pool size -->
    <property name="connectionPoolSize" value="2" />
    <!-- Use binary protocol,default is TextCommandFactory -->
    <property name="commandFactory">
        <bean />
    </property>
    <!-- Distributed strategy -->
    <property name="sessionLocator">
        <bean />
    </property>
    <!-- Serializing transcoder -->
    <property name="transcoder">
        <bean />
    </property>
    <property name="servers" 
              value="192.168.22.165:10001 192.168.22.165:10002" />
    <!-- server's weights -->
    <property name="weights">
        <list>
            <value>1</value>
            <value>1</value>
        </list>
    </property>
</bean>

可以配置 nio连接数:connectionPoolSize 传输是文本还是二进制形式:commandFactory 不同的hash散列算法:sessionLocator 序列化方式:transcoder 多个服务器负载均衡:servers 服务器的比重:weights

bean工厂返回的是一个MemcachedClient client

3、使用客户端

client.set(“key1”, 12, “value”) //超时时间是秒 你也可以使用异步的方式 client.setWithNoReply(“key1”, 12, “value”);

其它操作,你参考memcache官方说明,每一个操作,都对应一个同名方法。

二、JAVA访问redis之Jedis

Jedis是redis官方第一位推荐的java客户端。

1、引入客户端

<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.4.2</version>
</dependency>

2、单连接使用jedis 官方示例:

Jedis jedis = new Jedis("localhost");
jedis.set("foo", "bar");
jedis.auth(password);
jedis.select(database);
String value = jedis.get("foo");

3、使用连接池

JedisPoolConfig poolConfig = new JedisPoolConfig();
poolConfig.setMaxTotal(32);
poolConfig.setMaxIdle(32);
poolConfig.setTestOnBorrow(true);
poolConfig.setMaxWaitMillis(6000);
JedisPool jedisPool = 
new JedisPool(poolConfig, host, port, timeout, password, database);

jedis的连接池是直接实现的commons-pool的 org.apache.commons.pool2.impl.GenericObjectPool 建立连接池之后,如何使用。 参考:JAVA的那些池子