首页 > 数据库 >踩坑记录:Redis的lettuce连接池不生效

踩坑记录:Redis的lettuce连接池不生效

时间:2022-12-06 14:55:24浏览次数:42  
标签:false Redis lettuce 实例 线程 连接 连接池

踩坑记录:Redis的lettuce连接池不生效

一、lettuce客户端

lettuce客户端
Lettuce 和 Jedis 的都是连接Redis Server的客户端程序。Jedis在实现上是直连redis server,多线程环境下非线程安全(即多个线程对一个连接实例操作,是线程不安全的),除非使用连接池,为每个Jedis实例增加物理连接。Lettuce基于Netty的连接实例(StatefulRedisConnection),可以在多个线程间并发访问,且线程安全,满足多线程环境下的并发访问(即多个线程公用一个连接实例,线程安全),同时它是可伸缩的设计,一个连接实例不够的情况也可以按需增加连接实例。

//lettuce依赖commons-pool2

二、解决方法

1、要想使lettuce连接池生效,即使用多个redis物理连接。这行设置不能缺少

genericObjectPoolConfig.setTimeBetweenEvictionRunsMillis(100);

这个设置是,每隔多少毫秒,空闲线程驱逐器关闭多余的空闲连接,且保持最少空闲连接可用,这个值最好设置大一点,否者影响性能。同时 genericObjectPoolConfig.setMinIdle(minIdle); 中minldle值要大于0。

lettuce连接池属性timeBetweenEvictionRunsMillis如果不设置 默认是 -1,当该属性值为负值时,lettuce连接池要维护的最小空闲连接数的目标minIdle就不会生效 。

2、factory.setShareNativeConnection(true),shareNativeConnection 这个属性默认是true,允许多个连接公用一个物理连接。如果设置false ,每一个连接的操作都会开启和关闭socket连接。如果设置为false,会导致性能下降,本人测试过了。

❗ 另:factory.setValidateConnection(false), validateConnection这个属性是每次获取连接时,校验连接是否可用。默认false,不去校验。默认情况下,lettuce开启一个共享的物理连接,是一个长连接,所以默认情况下是不会校验连接是否可用的。如果设置true,会导致性能下降

标签:false,Redis,lettuce,实例,线程,连接,连接池
From: https://www.cnblogs.com/checkcode/p/lettuce_1.html

相关文章

  • Redis如何模糊匹配Key值
    Redis模糊匹配Key值使用Redis的scan代替Keys指令:publicSet<String>scan(StringmatchKey){Set<String>keys=(Set<String>)redisTemplate.execute((RedisC......
  • Redis原理 - 对象的数据结构(SDS、Inset、Dict、ZipList、QuickList、SkipList、RedisO
    Redis数据结构1.SDSRedis是用C语言写的,但是对于Redis的字符串,却不是C语言中的字符串(即以空字符’\0’结尾的字符数组),它是自己构建了一种名为简单动态字符串(sim......
  • Redis
    Redis缓存一、关于缓存缓存的定义:缓存(Cache),就是数据交换的缓冲区,俗称的缓存就是缓冲区内的数据,一般从数据库中获取,存储于本地代码举个例子:越野车,山地自行车,都......
  • Redis 缓存击穿问题
    解决方案一:互斥锁假设一个热门产品的缓存时间到期了,那么将会有大量的请求查询不到缓存,就只能去查询数据库然后再把数据添加到缓存中。但是如果在缓存时间到期的瞬间有很多......
  • Redis的三种模式
    一、Redis模式Redis有三种模式:分别是主从同步/复制、哨兵模式、Cluster主从复制:主从复制是高可用Redis的基础,哨兵和群集都是在主从复制基础上实现高可用的。主从复制主要......
  • redis 相关
    Redis提供了丰富的数据类型,常见的有五种:String(字符串),Hash(哈希),List(列表),Set(集合)、Zset(有序集合)。后面又支持了四种数据类型: BitMap(2.2版新增)、HyperLogLog(2.8版新增)、......
  • Redis分布式锁及分区
    redis分区的方法redis实现的分布式锁RedLock算法,分布式锁,即在多个master上获取同一个锁1.inordertogetthelock,theclientgetthecurrentmstime2.顺序对n个实......
  • 《Redis实战篇》一、短信登录
    1.1、导入黑马点评项目1.1.1、导入SQL1.1.2、有关当前模型手机或者app端发起请求,请求我们的nginx服务器,nginx基于七层模型走的事HTTP协议,可以实现基于Lua直接绕开tomcat访......
  • Redis的三种模式
    一、Redis模式Redis有三种模式:分别是主从同步/复制、哨兵模式、Cluster主从复制:主从复制是高可用Redis的基础,哨兵和群集都是在主从复制基础上实现高可用的。主从复制主要......
  • Redis的三种模式
    一、redis主从复制1、主从复制-哨兵-集群主从复制:主从复制是高可用Redis的基础,哨兵和集群都是在主从复制基础上实现高可用的。主从复制主要实现了数据的多机备份,以及对于......