Redis客户端配置优化建议

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: Redis客户端配置优化建议

Redis客户端配置优化建议

Redis客户端配置项

参考spring-boot docs:data-properties.本篇以lettuce为例.着重讲连接池的配置.

配置项 默认值 描述 中文描述
spring.redis.lettuce.cluster.refresh.adaptive false Whether adaptive topology refreshing using all available refresh triggers should be used. redis集群拓扑自动刷新
spring.redis.lettuce.cluster.refresh.period Cluster topology refresh period. 集群拓扑刷新周期。
spring.redis.lettuce.pool.max-active 8.0 Maximum number of connections that can be allocated by the pool at a given time. Use a negative value for no limit. 连接池可以分配的最大连接数。使用负值表示无限制。
spring.redis.lettuce.pool.max-idle 8.0 Maximum number of “idle” connections in the pool. Use a negative value to indicate an unlimited number of idle connections. 连接池可以分配的最大连接数。使用负值表示无限制。
spring.redis.lettuce.pool.max-wait -1ms Maximum amount of time a connection allocation should block before throwing an exception when the pool is exhausted. Use a negative value to block indefinitely. 连接池资源耗尽时,连接尝试分配阻塞时间,超时即抛出异常。使用负值无限期阻塞。
spring.redis.lettuce.pool.min-idle 0.0 Target for the minimum number of idle connections to maintain in the pool. This setting only has an effect if both it and time between eviction runs are positive. 连接池最小空闲连接数.仅在它和time-between-eviction-runs都为正时有效
spring.redis.lettuce.pool.time-between-eviction-runs Time between runs of the idle object evictor thread. When positive, the idle object evictor thread starts, otherwise no idle object eviction is performed. 空闲对象逐出器线程的运行间隔时间。当为正值时,空闲对象逐出器线程启动,否则不执行空闲对象逐出。
spring.redis.lettuce.shutdown-timeout 100ms Shutdown timeout. 关闭超时

配置详解

spring.redis.lettuce.pool.max-active

连接池最大的连接数.过少会导致竞争\阻塞.过多会浪费资源.

  • 配置数量过少
    往往在开发环境时配置会比较低,在压测时会导致竞争激烈,多数线程被阻塞,导致TPS上不去.
    可以通过打印redis查询接口耗时发现,接口耗时不稳定.有些快的在1ms完成,慢的在40ms以上,甚至超时.[建议查询耗时在1-3ms之间]
    解决方法: 加大配置值.
    建议默认值: CPU*2

一次redis连接池连接数配置过少引起的性能问题

  • 配置数量过大
    配置数量过大不仅浪费资源,甚至可能抢占不到与redis的连接,这与redis服务器可连接的最大数有关.

处理redis连接数过多

spring.redis.lettuce.pool.max-idle

连接池最大的空闲数.过少会导致频繁释放\建立链接,十分耗时(建立连接是耗时操作).过多会浪费资源.

  • 配置数量过少
    导致并发高时,需要新建与redis的连接.
    通过监控查看redis每秒新建连接数与当前连接数,逐步提高配置数量,以致达到预期.

一次redis调优——连接池优化

spring.redis.lettuce.pool.max-wait

连接尝试分配阻塞时间.过短会频繁抛出异常,在有旁路设计的系统中,压力就会宣泄到数据库中.过长或者无限制会导致接口响应时间过长.

spring.redis.lettuce.pool.min-idle

连接池最小空闲连接数.

spring.redis.lettuce.pool.time-between-eviction-runs

空闲对象逐出器线程的运行间隔时间.空闲连接线程释放周期时间.

配置推荐

开发环境

spring.redis.lettuce.pool.max-active = 2
spring.redis.lettuce.pool.max-idle = 2

生产环境

spring.redis.lettuce.pool.max-active = 大于cpu*2
spring.redis.lettuce.pool.max-idle = cpu*2
spring.redis.lettuce.pool.max-wait = 5s
spring.redis.lettuce.pool.min-idle = 0
spring.redis.lettuce.pool.time-between-eviction-runs = 1s

其他

lettuce连接池源码解析: lettuce连接池很香,撸撸它的源代码


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
26天前
|
NoSQL 关系型数据库 MySQL
MySQL与Redis协同作战:百万级数据统计优化实践
【10月更文挑战第21天】 在处理大规模数据集时,传统的单体数据库解决方案往往力不从心。MySQL和Redis的组合提供了一种高效的解决方案,通过将数据库操作与高速缓存相结合,可以显著提升数据处理的性能。本文将分享一次实际的优化案例,探讨如何利用MySQL和Redis共同实现百万级数据统计的优化。
68 9
|
21天前
|
存储 SQL 关系型数据库
2024Mysql And Redis基础与进阶操作系列(1)作者——LJS[含MySQL的下载、安装、配置详解步骤及报错对应解决方法]
Mysql And Redis基础与进阶操作系列(1)之[MySQL的下载、安装、配置详解步骤及报错对应解决方法]
|
26天前
|
NoSQL 关系型数据库 MySQL
MySQL与Redis协同作战:优化百万数据查询的实战经验
【10月更文挑战第13天】 在处理大规模数据集时,传统的关系型数据库如MySQL可能会遇到性能瓶颈。为了提升数据处理的效率,我们可以结合使用MySQL和Redis,利用两者的优势来优化数据查询。本文将分享一次实战经验,探讨如何通过MySQL与Redis的协同工作来优化百万级数据统计。
56 5
|
26天前
|
NoSQL 网络协议 算法
Redis 客户端连接
10月更文挑战第21天
28 1
|
1月前
|
NoSQL 关系型数据库 MySQL
MySQL与Redis协同作战:百万数据量的优化实录
【10月更文挑战第6天】 在现代互联网应用中,随着用户量的增加和业务逻辑的复杂化,数据量级迅速增长,这对后端数据库系统提出了严峻的挑战。尤其是当数据量达到百万级别时,传统的数据库解决方案往往会遇到性能瓶颈。本文将分享一次使用MySQL与Redis协同优化大规模数据统计的实战经验。
125 3
|
1月前
|
存储 NoSQL Redis
Redis 配置
10月更文挑战第14天
25 1
|
1月前
|
NoSQL 关系型数据库 BI
记录一次MySQL+Redis实现优化百万数据统计的方式
【10月更文挑战第13天】 在处理百万级数据的统计时,传统的单体数据库往往力不从心,这时结合使用MySQL和Redis可以显著提升性能。以下是一次实际优化案例的详细记录。
118 1
|
1月前
|
存储 消息中间件 NoSQL
Redis 入门 - C#.NET Core客户端库六种选择
Redis 入门 - C#.NET Core客户端库六种选择
60 8
|
1月前
|
存储 缓存 NoSQL
大数据-46 Redis 持久化 RDB AOF 配置参数 混合模式 具体原理 触发方式 优点与缺点
大数据-46 Redis 持久化 RDB AOF 配置参数 混合模式 具体原理 触发方式 优点与缺点
59 1
|
1月前
|
消息中间件 NoSQL Kafka
大数据-116 - Flink DataStream Sink 原理、概念、常见Sink类型 配置与使用 附带案例1:消费Kafka写到Redis
大数据-116 - Flink DataStream Sink 原理、概念、常见Sink类型 配置与使用 附带案例1:消费Kafka写到Redis
134 0
下一篇
无影云桌面