redis热点数据如何处理?一般是什么原因引起的_java自学_java相关资讯_成都java培训机构

redis热点数据如何处理?一般是什么原因引起的

  • 作者:创始人
  • 发表时间:2021-11-25 09:42:31

学习redis的朋友们有没有遇到过redis热点数据的问题呢?那么redis热点数据如何处理?一般是什么原因引起的?

热点数据最大的问题会造成 Reids 集群负载不均衡(也就是数据倾斜)导致的故障,这些问题对于 Redis 集群都是致命打击。Redis一般是由以下三个原因:

1. 高访问量的 Key,也就是热 key,根据过去的维护经验一个 key 访问的 QPS 超过 1000 就要高度关注了,比如热门商品,热门话题等。

2. Value,有些 key 访问 QPS 虽然不高,但是由于 value 很大,造成网卡负载较大,网卡流量被打满,单台机器可能出现千兆 / 秒,IO 故障。

3. 热点 Key + Value 同时存在,服务器杀手。

redis热点数据如何处理?关于如何治理热点数据问题,解决这个问题主要从两个方面考虑,第一是数据分片,让压力均摊到集群的多个分片上,防止单个机器打挂,第二是迁移隔离。

redis热点数据如何处理

1.key 拆分:

如果当前 key 的类型是一个二级数据结构,例如哈希类型。如果该哈希元素个数较多,可以考虑将当前 hash 进行拆分,这样该热点 key 可以拆分为若干个新的 key 分布到不同 Redis 节点上,从而减轻压力

2. 迁移热点 key

Redis Cluster 为例,可以将热点 key 所在的 slot 单独迁移到一个新的 Redis 节点上,这样这个热点 key 即使 QPS 很高,也不会影响到整个集群的其他业务,还可以定制化开发,热点 key 自动迁移到独立节点上,这种方案也较多副本。

3. 热点 key 限流:

对于读命令我们可以通过迁移热点 key 然后添加从节点来解决,对于写命令我们可以通过单独针对这个热点 key 来限流。

4. 增加本地缓存:

对于数据一致性不是那么高的业务,可以将热点 key 缓存到业务机器的本地缓存中,因为是业务端的本地内存中,省去了一次远程的 IO 调用。但是当数据更新时,可能会造成业务和 Redis 数据不一致。

redis热点数据如何处理?一般是什么原因引起的?关注成都Java培训机构,带你了解更多Java相关问题。