数据倾斜

本文探讨了Redis集群中数据量和访问倾斜的问题,包括bigkey、Slot分配不均和HashTag导致的数据倾斜,以及热点数据的处理策略。解决方案包括拆分bigkey,调整Slot分配,利用HashTag优化分布,以及采用热点数据多副本策略来平衡负载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据量倾斜:在某些情况下,实例上的数据分布不均衡,某个实例上的数据特别多。

1. bigkey 导致倾斜

某个实例上正好保存了 bigkey。bigkey 的 value 值很大(String 类型),或者是 bigkey 保存了大量集合元素(集合类型),会导致这个实例的数据量增加,内存资源消耗也相应增加。

把 bigkey 拆分成很多个小的集合类型数据,分散保存在不同的实例上。

2. Slot 分配不均衡导致倾斜

导致某个或某些实例上有大量数据。

3. Hash Tag 导致倾斜

Hash Tag 是指加在键值对 key 中的一对花括号{}。这对括号会把 key 的一部分括起来,客户端在计算 key 的 CRC16 值时,只对 Hash Tag 花括号中的 key 内容进行计算。如果没用 Hash Tag 的话,客户端计算整个 key 的 CRC16 的值。

因为 Redis Cluster 和 Codis 本身并不支持跨实例的事务操作和范围查询,当业务应用有这些需求时,就只能先把这些数据读取到业务层进行事务处理,或者是逐个查询每个实例,得到范围查询的结果。使用 Hash Tag 的好处是,如果不同 key 的 Hash Tag 内容都是一样的,那么,这些 key对应的数据会被映射到同一个 Slot 中,同时会被分配到同一个实例上。

 

数据访问倾斜:虽然每个集群实例上的数据量相差不大,但是某个实例上的数据是热点数据,被访问得非常频繁。

热点数据多副本:把热点数据复制多份,在每一个数据副本的 key 中增加一个随机前缀,让它和其它副本数据不会被映射到同一个 Slot 中。只能针对只读的热点数据。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值