使用Java操作Redis服务端
个人博客
- Jedis
- JedisCluster
- Lettuce
- RedisTemplate
1、Redis应用场景
- 缓存热点数据,减轻数据库查询压力。
- 限时业务用于存储临时数据,比如token、验证码等,减轻数据库读写压力。
- 计数器,社交网站的点赞数、转发数、浏览数存储,和对于一些网关应用进行流量统计用于限流等场景,减轻数据库写压力。
- 消息的发布与订阅,类似于MQ的机制。
- 实现分布式锁。
- 分布式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作为实现。
参考链接
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 赵晓斌技术博客!
评论