redis:数据倾斜是什么?怎么应对热点数据?

        要知道什么是数据倾斜就的搞清楚redis是怎么存储和访问数据的。数据会按照一定的规则分布到不同槽上,然后槽又落在不同的机器节点上。比如把key进行crc16函数计算后的值对槽取模,然后槽会分配到不同的节点上。然后存取都会到对应的节点上去进行处理。

        倾斜可以分为两类:

        1,存储倾斜。指不同节点上存储的数据量很不均匀,如一台存的很多,一台存的很少。

        2,访问倾斜。数据存储都差不多,但是访问很倾斜的打到一台节点上。

        为什么会造成存储倾斜呢?

        1,bigkey导致。bigkey的意思就是key的value非常大。存了很大的字符串或者集合。解决办法就是把数据分开存储到多个key上即可。

        2,槽分配不均匀导致。redis有16000多个槽,数据会存储在这些槽上,实际这些槽会分布到具体的实体机器上。这个分配是可以手动的,如果哪台机器性能较好,完全可以多分配些槽上去。

        3,哈希标签(Hash Tag)方式。hashTag的意思是在key中加一对括号。比如user:{123},那么计算槽时就只会用123计算,而不是整个user:{123}计算。

        访问倾斜又是怎么回事呢?

        访问倾斜其实就是典型的热点数据。比如用redis做博客,明星发布了一个什么吃瓜消息后。同时几十万上百万的请求都想看这个新闻,那么这个访问就发生了倾斜。如果请求都打到一台机器上,肯定完蛋。

        怎么应对热点数据?

        其实也是要将数据分开存储到不同的机器上,让更多的机器来抗压力。数据怎么存储多份呢?

key机器
key=热点事件:XX明星结婚:随机key110241
key=热点事件:XX明星结婚:随机key220482
key=热点事件:XX明星结婚:随机key330963

然后访问的时候随机的带上当时存储的随机key就可以把请求分摊到多台机器上了。

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值