Redis核心技术-性能-实战(查找bigKey、hotkey)

排查bigkey

过大的 Value 会引发数据倾斜热点Key实例流量CPU 性能被占满等问题,这个时候就需要排查 Redis 的大key去优化业务了,下面提供一些排查方案总结。

多大的 key 算大呢?

  • 一个STRING类型的Key,它的值为5MB(数据过大)
  • 一个LIST类型的Key,它的列表数量为20000个(列表数量过多)
  • 一个ZSET类型的Key,它的成员数量为10000个(成员数量过多)
  • 一个HASH格式的Key,它的成员数量虽然只有1000个但这些成员的value总大小为100MB(成员体积过大)

如何查询key大小?
MEMORY USAGE 命令给出一个 key 和它的值在 RAM 中所占用的字节数。

> memory usage testk
51

1.使用命令 --bigkeys

–bigkeys 是 redis 自带的命令,对整个 Key 进行扫描,统计 string,list,set,zset,hash 这几个常见数据类型中每种类型里的最大的 key。

–bigkeys 是以 scan 延迟计算的方式扫描所有 key,因此执行过程中不会阻塞 redis,但实例存在大量的 keys 时,命令执行的时间会很长,这种情况建议在 slave 上扫描。

Linux:

redis-cli -h 127.0.0.1 -p 6379 -a "password" --bigkeys

Windows:

./redis-cli.exe -h 127.0.0.1 -p 6379 -a "password" --bigkeys

2.使用 Rdbtools 工具包

Rdbtools 是 python写的 一个第三方开源工具,用来解析 Redis 快照文件。除了解析 rdb 文件,还提供了统计单个 key 大小的工具。

2.1安装
git clone https://github.com/sripathikrishnan/redis-rdb-tools
cd redis-rdb-tools sudo && python setup.py install
2.2使用

从 dump.rdb 按照文件统计, 将所有 > 10kb 的 key 输出到一个 csv 文件

rdb dump.rdb -c memory --bytes 10240 -f live_redis.csv

3.阿里云DBA工具

在这里插入图片描述

排查hotkey

热Key带来的常见问题:

  1. 热Key占用大量的Redis CPU时间使其性能变差并影响其它请求;
  2. Redis Cluster中各node流量不均衡造成Redis Cluster的分布式优势无法被Client利用,一个分片负载很高而其它分片十分空闲从而产生读/写热点问题;
  3. 在抢购、秒杀活动中,由于商品对应库存Key的请求量过大超出Redis处理能力造成超卖;
  4. 热Key的请求压力数量超出Redis的承受能力造成缓存击穿,此时大量强求将直接指向后端存储将其打挂并影响到其它业务;

1.–hotkeys 工具

执行redis自带的hotkey查询工具:

Administrator@DESKTOP-2TA9FLB MINGW64 /f/opt/Redis/Redis-x64-5.0.14.1
$ ./redis-cli.exe -h r-xxx.redis.rds.aliyuncs.com -p 6379 -a "123456" --hotkeys
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
Error: ERR An LFU maxmemory policy is not selected, access frequency not tracked. Please note that when switching between policies at runtime LRU and LFU data will take some time to adjust.

但是,需要把redis缓存淘汰策略 设置为volatile-lfu或者allkey-lfu才能使用 --hotkeys。

查询缓存淘汰策略配置:

> config get maxmemory-policy
maxmemory-policy
volatile-lru

2.阿里云DBA工具

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冲上云霄的Jayden

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值