Redis 大key、热key优化

Redis 大key、热key优化

大key

分为两种:字符串类型长度很大以及非字符串类型的数据结构中元素很多

  1. 危害:

    1. 集群模式下,内存分配不均,不利于集群管理
    2. 非字符串的数据结构例如hash,执行hgetall时,大key会导致阻塞
    3. 过期删除大key导致阻塞
    4. 读大key时网络阻塞
  2. 监控:

    1. 找运维,让他们在从节点上监控,利用scan + memory usage方式。
    2. 找架构组,在客户端改造或者中间proxy上改造,统计每次写入redis的数据大小,写入elasticsearch,然后在es上做监控报警。这种方式实时但是不全面,会漏掉通过追加变成bigkey的key。
  3. 找到之后第一步 删除 (如果对业务有影响,则先做第二步,再做第一步)

    1. 对字符串,直接del,不阻塞
    2. 对于非字符串,利用hscan、ltrim、sscan、zscan,分多批删除
  4. 找到之后第二步 优化

    1. 拆分,拆成多个key,让其散列到集群下的不同节点中。比如按userId拆、按时间拆。

热key

场景比如某个抢购商品的基础信息、库存。

  1. 危害:

    1. 集群模式下,大量的压力干到一个节点上
  2. 监控:

    1. 找架构组,在客户端改造或者中间proxy上改造,统计每次请求,输出到elasticsearch,然后在es上做监控报警
  3. 优化:

    1. 集群模式下,需要将请求分散到不同节点上。例如库存,可以拆多块分散到不同节点
    2. 多级缓存,将热点key用服务器来做缓存(堆内concurrenthashmap,堆外ecache),利用发布订阅或者其他消息中间件来更新。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值