`

redisson,Redis client总结

阅读更多

   Redis是开源的key-value存储工具,redis通常用来存储结构化的数据,因为rediskey可以包含Stringhashlistsetsorted list

         Redisserver目前最稳定的版本是2.8.9,可以到官网http://redis.io/download下载。根据机器的类型及位数下载对应的版本安装即可,reids支持linuxwindows操作系统。

         Redisclient支持多种语言,包括:cC++C#phpjavapythongo等语言,根据自己的开发语言,选择合适的redis client版本类型即可。我是使用java语言开发的,针对java语言,redis client也提供了多种客户端支持,按照推荐类型依次是:JedisRedissonJRedisJDBC-RedisRJCredis-protocolaredislettuce。前两种类型是比较推荐的,我们采用了Redisson类型版本作为redisclient的使用。

         Redisson的源码工程所在位置:https://github.com/mrniko/redisson

 

由于redisson是2014年1月份才发布的开源项目,对于很多使用redis的用户来说,还是个新东西,关于redisson的文档除了github上边有简单介绍之外,其它网站还没有,所以我基于对源码的理解还有github介绍,简单介绍下redisson。
 
  redisson实现了分布式和可扩展的java数据结构,支持的数据结构有:List, Set, Map, Queue, SortedSet, ConcureentMap, Lock, AtomicLong, CountDownLatch。并且是线程安全的,底层使用Netty 4实现网络通信。和jedis相比,功能比较简单,不支持排序,事务,管道,分区等redis特性,可以认为是jedis的补充,不能替换jedis。
 
优点:
1.可以使用熟悉的java数据结构,比如要往List中存储1,2,3,4,代码是这样的:
1
2
3
4
5
List<Integer> list = redisson.getList("list");
list.add(1);
list.add(2);
list.add(3);
list.add(4);

2.支持存储pojo对象,比如要存储一个TestObject,代码是这样的:

1
2
List<TestObject> list = redisson.getList("list");
list.add(new TestObject());

3.是线程安全的,这也是redisson特别强调的,看一下List的存储逻辑,使用watch,muti,exec保证了数据的一致性。  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public V set(int index, V element) {
        checkIndex(index);
        RedisConnection<String, Object> conn = connectionManager.connection();
        try {
            while (true) {
                conn.watch(getName());
                V prev = (V) conn.lindex(getName(), index);
 
                conn.multi();
                conn.lset(getName(), index, element);
                if (conn.exec().size() == 1) {
                    return prev;
                }
            }
        finally {
            connectionManager.release(conn);
        }
    }

缺点:

不支持字符串存储,Redisson的实现类中只支持集合操作,不能对普通字符做操作。
不支持很多redis特性,比如排序,事务,管道,集群等。
发布时间短,稳定性和可靠性有待验证。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics