Redis资料汇总(十) java client

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

 

支持redis版本性能维护推荐
JDBC-Redis not good  
JRedis1.2.n release
2.0.0 尚未release版本
fast  
Jedis2.0.0 releasefastactively developed推荐

JDBC-Redis

JDBC-Redis is just a JDBC wrapper for JRedis database.
If you plan on using your code with different back-ends then JDBC is a good way to go. NOTE: It is not a complete JDBC implementation and the NOSQL will bleed through.

If you are going to stay with Redis then I would suggest using the API, which will give you more flexibility. Use a DAO layer pattern to encapsulate your DB Access and down the road that is all you will need to change.

- Romain Hippeau

Redis syntax is completely different from standard SQL so using JDBC doesn't help encapsulating different back-ends as you suggest: I would have to write new queries anyway... – muriloq Jun 16 '10 at 14:00
@muriloq - but the mechanical acquiring and releasing resources is standard. – Romain Hippeau

spring wrapper

Spring provides a wrapper around both implementations(Jredis Jedis) and they're providing serialization/deserialization, amongst other things: 

1
2
3
4
Person p = new Person( "Joe" , "Trader" , 33 );
template.convertAndSet( "trader:1" , p);
Person samePerson = template.getAndConvert( "trader:1" , Person. class );
Assert.assertEquals(p, samePerson);
放弃spring wrapper

项目中本来打算使用spring wrapperbean 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://stackoverflow.com/questions/3047010/best-redis-library-for-java
https://github.com/xetorthio/johm

https://github.com/xetorthio/jedis/issues/closed#issue/76

转载于:https://www.cnblogs.com/IcemanJava/p/5371954.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值