当前位置: 首页 > article >正文

springboot配置redis lettuce连接池,以及连接池参数解释

文章目录

  • 前置
  • 基本配置
  • 参数解释

前置

  • java
  • springboot
  • redis
  • lettuce 连接池

有很多连接池,比如 jedis,lettuce,redission,springboot 默认使用 lettuce 连接池

lettuce 连接池的特点是:一个 lettuce 连接可以被多个线程复用,不需要频繁创建连接,其实是通过 Netty 实现了异步非阻塞,单连接即可支持高并发

虽然多个线程可以共享一个 lettuce 的一个连接,但是 redis 它本身是串行执行命令的

默认情况下(shareNativeConnection = true),Lettuce 的连接池(如 GenericObjectPool)实际上 不会生效,因为所有线程都共用一个连接

如果你希望启用连接池(例如为每个线程分配独立连接),需要显式设置 shareNativeConnection = false,此时连接池参数(如 max-active、max-idle)才会起作用

如果默认按照 shareNativeConnection = true,Lettuce 会始终使用一个物理连接,所有线程共享这个连接,不会生成第二个新的连接,连接池参数不生效,官方推荐默认值,因为已经适合了大多数场景,单个连接即可满足高并发需求,避免资源浪费

基本配置

依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

application.yml

spring:redis:host: localhost  # Redis 服务器地址port: 6379       # Redis 服务器端口,默认是 6379password:        # Redis 密码(如果没有密码,可以省略)database: 0      # 使用的数据库索引,默认是 0timeout: 2000    # 连接超时时间(毫秒)lettuce:pool:max-active: 8      # 连接池最大连接数max-idle: 8        # 连接池最大空闲连接数min-idle: 0        # 连接池最小空闲连接数max-wait: -1ms     # 连接池最大阻塞等待时间(-1 表示无限制)

参数解释

参数说明默认值推荐值
活跃连接和空闲连接:
spring.redis.lettuce.pool.max-active最大活跃连接数(包括正在使用和空闲的连接)8根据 CPU 核心数调整,通常为 CPU * 2 + 2
spring.redis.lettuce.pool.max-idle最大空闲连接数(避免频繁创建连接)8CPU * 2
spring.redis.lettuce.pool.min-idle最小空闲连接数(保持一定数量的空闲连接)00 或 1(低负载场景)
spring.redis.lettuce.pool.time-between-eviction-runs空闲连接回收线程的运行间隔(单位:毫秒),清理的是超过 max-idle 或空闲时间过长的空闲连接,根据 min-evictable-idle-time,关闭长时间未使用的空闲连接,但连接数不低于 min-idle1000~60000(根据负载调整)
spring.redis.lettuce.pool.min-evictable-idle-time最小驱逐空闲时间未显式配置时默认为 300 秒300秒
连接等待与超时:
spring.redis.lettuce.pool.max-wait获取连接的最大等待时间(单位:毫秒,负值表示无限等待)-15000~60000(避免线程长时间阻塞)
spring.redis.lettuce.shutdown-timeout关闭连接池的超时时间(单位:毫秒)1001000~5000(确保连接正常关闭)
http://www.lryc.cn/news/2386473.html

相关文章:

  • 基于aspnet,微信小程序,mysql数据库,在线微信小程序汽车故障预约系统
  • 如何使用AI搭建WordPress网站
  • 打破双亲委派模型的实践:JDBC与Tomcat的深度解析
  • 《打破枷锁:Python多线程GIL困境突围指南》
  • Java并发编程:全面解析锁策略、CAS与synchronized优化机制
  • 2025第三届黄河流域网络安全技能挑战赛--Crypto--WriteUp
  • [爬虫知识] IP代理
  • 6个月Python学习计划 Day 1 - Python 基础入门 开发环境搭建
  • GraphPad Prism工作表的基本操作
  • Maven插件之docker-maven-plugin
  • 成年后还能学习多少知识,由大脑的这个数量决定
  • Flask 会话管理:从原理到实战,深度解析 session 机制
  • MySQL连接错误解决方案:Can‘t connect to MySQL server on ‘localhost‘ (10038)
  • 【跨端框架检测】使用adb logcat检测Android APP使用的跨端框架方法总结
  • lua脚本实战—— Redis并发原子性陷阱
  • 【MySQL】第10节|MySQL全局优化与Mysql 8.0新增特性详解
  • CSS相关知识
  • AI扫描王APP:高效便捷的手机扫描工具,让生活更智能
  • 《仿盒马》app开发技术分享-- 原生地图展示(端云一体)
  • Linux 操作文本文件列数据的常用命令
  • IP、子网掩码、默认网关、DNS
  • 华为OD机试真题——字符串加密 (2025B卷:100分)Java/python/JavaScript/C/C++/GO最佳实现
  • 角度回归——八参数检测四边形Gliding Vertex
  • JVM 高质量面试题
  • AI助力,制作视频裁剪软件
  • SQL注入基础
  • 使用 A2A Python SDK 实现 CurrencyAgent
  • qt浏览文件支持惯性
  • Python类的力量:第六篇:设计模式——Python面向对象编程的“架构蓝图”
  • [实战]用户系统-2-完善登录和校验以及VIP