Redis:优雅键值设计与BigKey处理指南
发布于 2024-07-18
1610
版权声明
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
springboot葵花宝典
扫码关注公众号
扫码阅读
手机扫码阅读
Redis:优雅键值设计与BigKey处理指南
1. 优雅的key结构
Redis的key设计应遵循最佳实践,包括使用格式:[业务名称]:[数据名]:[数据/数据id],长度不超过44字节,不包含特殊字符。这样可以提高可读性,避免key冲突,便于管理,并节省内存。
小于44字节的key采用embstr编码,内存连续且占用更少;超过44字节则转为raw模式,可能导致性能下降和内存碎片。
2. BigKey慎用
BigKey是指数据量或成员数量较大的key,例如String类型的值达5MB,或集合类型成员超过5000个。推荐单个key的value小于10KB,集合类型key的元素数量不超过1000。
2.1. BigKey的危害
BigKey可能导致以下问题:
- 网络阻塞:高带宽使用率影响实例性能。
- 数据倾斜:使Redis实例内存资源不均衡。
- Redis阻塞:复杂操作耗时,主线程受影响。
- CPU压力:序列化和反序列化增加CPU负载。
3. 如何发现BigKey
3.1. redis-cli --bigkeys
通过redis-cli --bigkeys命令遍历分析所有key,获取统计信息和Top1的BigKey。
3.2. scan扫描
使用scan命令编程遍历Redis中的key,结合strlen、hlen等命令判断key的大小。可设定阈值(如String类型最大长度10KB,集合类型最大元素数量500)发现BigKey。
3.3. 第三方工具
可使用Redis-Rdb-Tools分析RDB快照文件,全面了解内存使用情况。
如何删除BigKey
删除BigKey时需谨慎,建议逐个删除子元素后再删除整体key。对于Redis 4.0版本及以上,可使用异步删除命令unlink,减少主线程阻塞。
springboot葵花宝典
springboot葵花宝典
扫码关注公众号
还在用多套工具管项目?
一个平台搞定产品、项目、质量与效能,告别整合之苦,实现全流程闭环。
查看方案
springboot葵花宝典的其他文章
使用Java操作Redis从入门到精通
Java中操作Redis今日目标 掌握spring-boot-starter-redis的使用介绍 在昨天我
如何保证缓存与数据库的双写一致性
保证缓存与数据库的双写一致性
Spring Security-2-表单认证
Spring Security-2-表单认证
Spring Boot starter总结
spring boot 在配置上相比spring要简单许多, 其核心在于spring-boot-starter, 在使用spring boot来搭建一个项目时, 只需要引入官方提供的starter, 就可以直接使用, 免去了各种配置。
说一下线程池的核心参数,线程池的执行原理知道嘛
说一下线程池的核心参数,线程池的执行原理知道嘛
加入社区微信群
与行业大咖零距离交流学习
PMO实践白皮书
白皮书上线
白皮书上线