主要分两种:1、spring中实现;2、jedis包
共同点:都是用连接池实现的。
对于springboot中的实现:
spring boot框架中已经集成了redis,在1.x.x的版本时默认使用的jedis客户端,现在是2.x.x版本默认使用的lettuce客户端,两种客户端的区别如下
# Jedis和Lettuce都是Redis Client # Jedis 是直连模式,在多个线程间共享一个 Jedis 实例时是线程不安全的, # 如果想要在多线程环境下使用 Jedis,需要使用连接池, # 每个线程都去拿自己的 Jedis 实例,当连接数量增多时,物理连接成本就较高了。
# Lettuce的连接是基于Netty的,连接实例可以在多个线程间共享, # 所以,一个多线程的应用可以使用同一个连接实例,而不用担心并发线程的数量。 # 当然这个也是可伸缩的设计,一个连接实例不够的情况也可以按需增加连接实例。 # 通过异步的方式可以让我们更好的利用系统资源,而不用浪费线程等待网络或磁盘I/O。 # Lettuce 是基于 netty 的,netty 是一个多线程、事件驱动的 I/O 框架, # 所以 Lettuce 可以帮助我们充分利用异步的优势。