SpringBoot2集成redis,使用lettuce客户端

Springboot集成redis大家都会用,主要就是使用RedisTemplate类来进行各种操作。可能很多人并没有注意,在Springboot2以后,底层访问redis已经不再是jedis了,而是lettuce。

至于jedis和lettuce有什么区别呢,对我们的使用有什么影响呢?

jedis采用的是直连redis server,在多个线程之间共用一个jedis实例时,是线程不安全的。如果想避免线程不安全,可以使用连接池pool,这样每个线程单独使用一个jedis实例。由此带来的问题时,如果线程数过多,带来redis server的负载加大。有点类似于BIO的模式。

lettuce采用netty连接redis server,实例可以在多个线程间共享,不存在线程不安全的情况,这样可以减少线程数量。当然,在特殊情况下,lettuce也可以使用多个实例。有点类似于NIO的模式。

在配置使用时,其实对我们影响很小。

在Springboot1.x时,我们配置redis是这样的:

那么现在使用了lettuce的情况下:

如果你感觉并不需要这个pool,把pool的配置给去掉就行了:

此时需要一个注意的地方,如果你配置了这个pool,那么必须在pom.xml添加上commons-pool2的依赖。没配置pool的话,可以不引用。

如果要在代码中使用RedisTemplate,那么配完上面的就已经可以用了,不过RedisTemplate默认只能支持RedisTemplate<String,String>形式的,也就是key-value只能是字符串,不能是其他对象。这在我的使用中,已经满足需求了,我都是将需要存入redis的对象变成json字符串存入。

如果你想存入其他类型的数据,就需要如下图,自己定义一个RedisTemplate对象,返回一个自己想要的RedisTemplate对象,自己定义序列化方式。下图可以看到那个factory就是LettuceConnectionFactory。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值