Redis 中如何应对数据倾斜
什么是数据倾斜
如果 Redis 中的部署,采用的是切片集群,数据是会按照一定的规则分散到不同的实例中保存,比如,使用 Redis Cluster 或 Codis 。
数据倾斜会有下面两种情况:
1、 数据量倾斜 :在某些情况下,实例上的数据分布不均衡,某个实例上的数据特别多。
2、 数据访问倾斜 :虽然每个集群实例上的数据量相差不大,但是某个实例上的数据是热点数据,被访问得非常频繁。
发生了数据倾斜,会造成那些数据量大的和访问量高的实例节点,系统的负载升高,响应速度变慢。严重的情况会造成内存资源耗尽,引起系统崩溃。
数据量倾斜
数据量倾斜,也就是实例上的数据分布不均衡,某个实例中的数据分布得特别多 。
数据量的倾斜,主要有下面三种情况:
1、bigkey导致倾斜;
2、Slot分配不均衡导致倾斜;
3、Hash Tag导致倾斜。
下面来一一的分析下
bigkey导致倾斜
什么是 bigkey :我们将含有较大数据或含有大量成员、列表数据的 Key 称之为大Key。
- 一个 STRING 类型的 Key,它的值为 5MB(数据过大)
- 一个 LIST 类型的 Key,它的列表数量为 20000 个(列表数量过多)
- 一个 ZSET 类型的 Key,它的成员数量为 10000 个(成员数量过多)
- 一个 HASH 格式的 Key,它的成员数量虽然只有 1000 个但这些成员的 value 总大小为 100MB(成员体积过大)
如果某个实例中保存了 bigkey ,那么就有可能导致集群的数据倾斜。
bigkey 存在问题
- 内存空间不均
Redis切片集群:数据倾斜的原因与解决方案

本文分析了Redis切片集群中数据倾斜的两种情况:数据量倾斜和数据访问倾斜。数据量倾斜主要由bigkey、Slot分配不均衡和Hash Tag使用不当引起。数据访问倾斜则是由于Hot Key导致的。文章提供了发现和解决Hot Key的方法,并总结了解决数据倾斜的策略。
最低0.47元/天 解锁文章
5307

被折叠的 条评论
为什么被折叠?



