Redis的BigKey扫描及优化
拒绝bigkey,防止网卡流量、慢查询、阻塞
如何寻找bigkey?
- redis-cli自带--bigkeys,例如:redis-cli -h -a --bigkeys
- 获取生产Redis的rdb文件,通过rdbtools分析rdb生成csv文件,再导入MySQL或其他数据库中进行分析统计,根据size_in_bytes统计bigkey
- 通过python脚本,迭代scan key,每次scan 1000,对扫描出来的key进行类型判断,例如:string长度大于10K,list长度大于10240认为是big bigkeys
- 其他第三方工具,例如:redis-rdb-cli,地址:https://github.com/leonchen83/redis-rdb-cli
如何优化bigkey?
①string类型控制在10kb以内,hash、list、st、zset元素个数不要超过5000,或者取模的形式拆分成多个小key。
②关键还是在于key一定设置过期时间,不是丢进缓存就不管了。
③删除大key使用unlink异步去删除,不阻塞。
④使用slowlog优化耗时命令
⑤慢查询主要有两个配置项
slowlog-log-slower-than 10000:用于设置慢查询的评定时间,也就是说超过此配置项的命令,将会被当成满操作记录在慢查询日志中,它执行单位是微秒(1秒等于1000000微秒)
slowlog-max-len 128 用来配置慢查询日志的最大记录数,最大上限128。
使用slowlog get n(n是数字)命令来获取相关慢查询日志,再找到这些慢查询对相应的业务进行优化
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!