JAVA访问memcache和redis

一、JAVA访问memcache之Xmemcached

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

1、引入Xmemcached

1
2
3
4
5
 <dependency>
      <groupId>com.googlecode.xmemcached</groupId>
      <artifactId>xmemcached</artifactId>
      <version>2.0.0</version>
 </dependency>

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<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、引入客户端

1
2
3
4
5
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.4.2</version>
</dependency>

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

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

3、使用连接池

1
2
3
4
5
6
7
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的那些池子

留言

提示:你的email不会被公布,欢迎留言^_^

*

验证码 *