Redis热点Key相关问题

参考博客:https://javaguide.cn/interview-preparation/teach-you-how-to-prepare-for-the-interview-hand-in-hand.html

MySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据

解决方法:
计算一下 20W 数据大约占用的内存,然后设置一下Redis内存限制,Redis 会根据自身数据淘汰策略,加载热数据到内存
即redis的缓存每命中一次,就给命中的缓存增加一定ttl(过期时间)(根据具体情况来设定, 比如10分钟).
一段时间后, 热数据的ttl都会较大, 不会自动失效, 而冷数据基本上过了设定的ttl就马上失效了.

Redis热点Key如何解决

Redis 使用 hotkeys 查看热点数据

一、 数据分片,让压力均摊到集群的多个分片上,防止单个机器打挂
二、 迁移隔离

1、hash拆分key:
对Key进行hash拆分,这样该热点 key 可以拆分为若干个新的 key 分布到不同Redis节点上,从而减轻压力
2、迁移热点 key:
以 Redis Cluster 为例,可以将热点 key 所在的 slot(槽)单独迁移到一个新的 Redis 节点上,这样这个热点 key 即使 QPS 很高,也不会影响到整个集群的其他业务,还可以定制化开发,热点 key 自动迁移到独立节点上,这种方案也较多副本。
3、热点 key 限流:
读命令我们可以通过迁移热点 key 然后添加从节点来解决,对于写命令我们可以通过单独针对这个热点 key 来限流。
4、增加本地缓存:
对于数据一致性不是那么高的业务,可以将热点 key 缓存到业务机器的本地缓存中,因为是业务端的本地内存中,省去了一次远程的 IO 调用。但是当数据更新时,可能会造成业务和Redis数据不一致。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值