个人博客


  • Jedis
  • JedisCluster
  • Lettuce
  • RedisTemplate

1、Redis应用场景

  1. 缓存热点数据,减轻数据库查询压力。
  2. 限时业务用于存储临时数据,比如token、验证码等,减轻数据库读写压力。
  3. 计数器,社交网站的点赞数、转发数、浏览数存储,和对于一些网关应用进行流量统计用于限流等场景,减轻数据库写压力。
  4. 消息的发布与订阅,类似于MQ的机制。
  5. 实现分布式锁。
  6. 分布式Session。

2、Java客户端

  • Jedis:以前Java基本使用Jedis作为操作Redis的客户端,Jedis在实现上是直接连接的redis server,如果在多线程环境下是非线程安全的,这个时候只有使用连接池,为每个Jedis实例增加物理连接。如果在cluster模式下,需要使用JedisCluster来操作Redis的集群。
  • Lettuce:Lettuce的连接是基于Netty的,连接实例(StatefulRedisConnection)可以在多个线程间并发访问,因为StatefulRedisConnection是线程安全的,所以一个连接实例(StatefulRedisConnection)就可以满足多线程环境下的并发访问,当然这个也是可伸缩的设计,一个连接实例不够的情况也可以按需增加连接实例。
  • RedisTemplate:Spring对于Redis操作的近一次封装,对于一些底层操作的差异进行了屏蔽,提供的API更加灵活方便。在SpringBoot1.x版本中默认使用Jedis作为实现,在2.x版本中则默认使用Lettuce作为实现。

参考链接