当前位置: 首页 > redis, 分布式系统, 缓存系统 > 正文

redis java client比较

1 星2 星3 星4 星5 星 (1 次投票, 评分: 5.00, 总分: 5)
Loading ... Loading ...
baidu_share

redis主页上列出的java 客户端有JDBC-Redis JRedis Jedis三种,下面分别介绍三种客户端的优缺点及其他相关的工具.

 
支持redis版本	性能	维护	推荐
JDBC-Redis	 	not good	 	 
JRedis	1.2.n release 
2.0.0 尚未release版本	fast	 	 
Jedis	2.0.0 release	fast	actively developed	推荐

jedis pool的问题

在使用jedis pool时遇到了这个问题:It seems like server has closed the connection

原因分析:

1.redis server 关闭了此客户端的连接:server端设置了maxidletime(默认是5分钟),服务端会不断循环检测clinet的最后一次通信时间(lastinteraction),如果大于maxidletime,则关闭连接,并回收相关资源。client在向该连接中写数据后就会由于server端已经关闭而出现 broken pipe的问题。

2.pool的设置错误:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
        <property name="maxActive"  value="20" />
        <property name="maxIdle" value="10" />
        <property name="maxWait" value="1000" />
    </bean>
 
<!-- jedis shard信息配置 -->
    <bean id="jedis.shardInfo" class="redis.clients.jedis.JedisShardInfo">
        <constructor-arg index="0" value="*.*.*.*" />
        <constructor-arg index="1" value="6379" />
    </bean>
 
    <!-- jedis shard pool配置 -->
    <bean id="shardedJedisPool" class="redis.clients.jedis.ShardedJedisPool">
        <constructor-arg index="0" ref="jedisPoolConfig" />
        <constructor-arg index="1">
            <list>
                <ref bean="jedis.shardInfo" />
            </list>
        </constructor-arg>
    </bean>
 
    <bean id="jedisCommands" factory-bean="shardedJedisPool"
        factory-method="getResource" />

上面的这种配法在spring初始化时获取一次实例化jedisCommands,而后每次的redis的调用时并未从pool中获取

解决方案:

设置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<!-- POOL配置 -->
    <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
        <property name="maxActive"  value="20" />
        <property name="maxIdle" value="10" />
        <property name="maxWait" value="1000" />
        <property name="testOnBorrow"  value="true"/>
    </bean>
 
    <!-- jedis shard信息配置 -->
    <bean id="jedis.shardInfo" class="redis.clients.jedis.JedisShardInfo">
        <constructor-arg index="0" value="*.*.*.*" />
        <constructor-arg index="1" value="6379" />
    </bean>
 
    <!-- jedis shard pool配置 -->
    <bean id="shardedJedisPool" class="redis.clients.jedis.ShardedJedisPool">
        <constructor-arg index="0" ref="jedisPoolConfig" />
        <constructor-arg index="1">
            <list>
                <ref bean="jedis.shardInfo" />
            </list>
        </constructor-arg>
    </bean>

本文固定链接: http://www.chepoo.com/redis-java-client-compare.html | IT技术精华网

【上一篇】
【下一篇】

redis java client比较:等您坐沙发呢!

发表评论