Jedis与Redisson详细对比

1、Jedis技术特点

比较全面支持redis命令,包括redis 2.8.x and 3.x.x.

支持Redis cluster

支持sentinel哨兵模式

使用阻塞的I/O,同步调用

不支持异步

不是线程安全的

All of the following redis features are supported:

  • Sorting
  • Connection handling
  • Commands operating on any kind of values
  • Commands operating on string values
  • Commands operating on hashes
  • Commands operating on lists
  • Commands operating on sets
  • Commands operating on sorted sets
  • Transactions
  • Pipelining
  • Publish/Subscribe
  • Persistence control commands
  • Remote server control commands
  • Connection pooling
  • Sharding (MD5, MurmurHash)
  • Key-tags for sharding
  • Sharding with pipelining
  • Scripting with pipelining
  • Redis Cluster

2、Redisson技术特点

它有两个版本:Open-source edition和PRO edition, 它的主要技术特点就是数据网格(In-Memory Data Grid),它支持的集群模式有:Redis Cluster、Sentinel哨兵模式、Master / Slave、Single单节点。下面给出 Pro 版本和开源版本的功能对比。

Jedis与Redisson详细对比_第1张图片

Jedis与Redisson详细对比_第2张图片

Jedis与Redisson详细对比_第3张图片

 

Redisson官方文档提供了一个RedissonPro和Jedis的性能对比:https://dzone.com/articles/redisson-pro-vs-jedis-which-is-faster

当redis 命令并发超过8(很容易的事情)时,Redisson吞吐量>Jedis吞吐量,但是 Redisson执行时间

另外,Redisson在基于NIO的Netty框架上异步操作。它的API是线程安全的。

RedissonPro针对大容量的Map和Set实现自动分片的功能,把一个大集合分割成几个小的集合,然后将他们分布在Redis集群里。好处在于整个操作对用户透明,同时增加该集合的吞吐量。

RedissonPro具有高速引擎,在高并发的情况下,专业版较开源版性能提升8倍,其中4倍吞吐量和两倍的响应速度。

 

3、应用场景分析

3.1、热点数据缓存

对于不经常变化的热点数据,两种方式都没有问题,但也要从几个方面考虑:

  1. 数据量大小。其实20万的数据已经挺大了,但是也就20M左右,所以除非要缓存的数据超过100M,优先选择Jedis
  2. 聚合计算比较多。把数据放到列表或者集合中,然后做数据精确查找,或者简单的模糊查询,比如根据IP找城市或者根据姓名模糊查询通信录等。Redisson可能更方便点,因为这些查找或计算一般都在应用程序里面执行,所以相对而言 Redisson使用更加方便。
  3. 数据增长比较快。需要增量添加到redis中,同时还有很多查询,优先使用Redisson。
  4. 需要使用本地缓存。Jedis 不支持本地缓存,优先使用Redisson。

3.2、账户资金缓存

对资金数据的操作,必须使用同步的,一般使用incr做加减,这时必须使用Jedis。必须要时对单个账号使用分布式锁。Redisson是异步的不适合对资金的操作。

3.3、网络统计数据

网络统计数据主要是用来分析,要执行简单的聚合计算或者检索,且数据量一般都比较大,我个人认为使用Redisson是合理的。

3.4、分布式锁

Redisson有成熟的分布式锁实现方式,并且提供了多种分布式锁实现方式。基于Jedis也可以也实现简单的互斥锁,但是要使用SETNX命令,并注意锁的粒度。Redisson实现了基于Redis集群的RedLock 分布式锁算法。不过这里有一篇反驳这个算法的文章:http://martin.kleppmann.com/2016/02/08/how-to-do-distributed-locking.html,在使用的时候可以参考下。

3.5、统计分析

对于一些专业的统计数据分析,需要使用复杂的计算公式,比如天气预报算法等,需要存储中间结果或需要提前加载大量基础数据,这时适合使用Redisson。但是对于hyperloglog基数计算,还是要使用Jedis。

3.6、搜索功能

Redis 中集合可以用来实现简单搜索的功能,可以使用集合以及有序集合的交集、并集和差集操作查找符合指定要求的元素。这种应用场景还是使用Jedis。

3.7、分布式Session

Spring session  就是用Jedis 吧,完全不用考虑Redisson。

3.8、需要本地缓存

Redisson专业版是支持本地缓存,它在Redis的基础上了做了扩展,不过Redis 6 很快也会支持本地缓存。

 

 

你可能感兴趣的:(NOSQL)