redis bigKey 场景

1. 多大的key才算是bigkey?

  • 通常说的bigkey 不是只key多大,而是key对应的value值很大

2. bigkey的危害

  • 网络传输延迟:当从Redis服务器读取或写入大键时,需要更多的时间和网络带宽来传输数据。这可能会导致响应时间延长,影响性能。
  • 数据处理效率降低:对大键进行读写操作可能会导致Redis服务器的处理速度变慢,因为它需要花费更多的时间来处理大量的数据。
  • 持久化备份问题:如果你使用了持久化功能(如RDB快照或AOF日志),大键会增加备份和恢复的时间和存储空间。
  • 缓存失效问题:如果大键被频繁更新,可能会导致与该键相关的其他缓存项失效,影响缓存系统的效率。

3.如何产生

  • 社交类: 明星粉丝列表,典型案例粉丝逐步递增
  • 汇总统计: 某个报表,日月年经年累计

4.如何删除

  • String 类型 一般用del,如果过于庞大使用unlink key 删除
  • Hash 每次获取少量的key, 在根据key删除value
  • list 使用渐进式删除, 直到全部删完
  • set类型:使用sscan每次获取部分元素,再使用srem命令删除每个元素
  • 使用zscan每次获取部分元素,在使用zremrangebyrank命令删除每个元素

5. 如何发现

redis-cli --bigkeys

  • 好处
    • 给出每种数据结构Top 1 bigkey,同时给出每种数据类型的键值个数+平均大小
  • 不足
    • 想查询大于10kb的所有key,–bigkeys参数就无能为力了,需要用到memory usage来计算每个键值的字节数

memory usage

计算每个键值的字节数

6、BigKey调优,惰性释放lazyfree

打开redis.conf配置文件LAZY FREEING相关说明

1、lazyfree-lazy-server-del no: 这个选项用于控制Redis服务器删除键时的行为。当设置lazyfree-lazy-server-del选项为no时,服务器会立即删除键,而不延迟删除操作。

2、replica-lazy-flush no: 这个选项用于控制主节点执行FLUSHALL或FLUSHDB命令时是否传播给从节点。当设置了replica-lazy-flush选项为no时,主节点执行这些命令后会将其传播给从节点,使得从节点也执行相同的操作。

3、lazyfree-lazy-user-del no: 这个选项用于控制Redis服务器删除键时的行为,与lazyfree-lazy-server-del选项类似。当设置了lazyfree-lazy-user-del选项为no时,服务器会立即删除键,而不延迟删除操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值