一、前言
一直以为SpringBoot中 spring-boot-starter-data-redis使用的是Jredis连接池,直到昨天在部署报价系统生产环境时,因为端口配置错误造成无法连接,发现报错信息如下:
一了解才知道在SpringBoot2.X以后默认是使用Lettuce作为Redis客户端驱动连接池。今天我们就来了解一下Lettuce和Jedis有什么不同,使用Lettuce有哪些优点。
二、Lettuce的介绍和配置
-
Jedis:采用的是直接连接redis-server,多线程操作时是不安全的,需要使用Jedis pool来规避线程不安全问题。
-
Lettuce:它的连接是基于Netty,连接实例可以在多个线程并发访问,一个连接实例可以满足多线程环境的并发访问,当然一个实例不够也可以按需增加实例,使用连接池。
创建SpringBoot2.6项目,引入spring-boot-starter-data-redis,打开Depnedencies可以看到他的依赖如下
配置如下:
在 SpringBoot spring-boot-autoconfigur包中spring.factories可以找到Redis自动配置类,它会绑定属性配置文件。
可以查看RedisProerties进行连接配置,在SpringBoot2.X版本以后既可以支持Jedis驱动也可以支持Lettuce驱动。因为默认不再引入Jedis驱动包,所以直接加载Lettuce驱动。如果已经加载了一个驱动,另外一个驱动就不会再加载。