Redis 分区

分区:怎么将数据分布到多个redis实例

定义:分区就是将你的数据分发到不同redis实例上的一个过程,每个redis实例只是你所有key的一个子集;根据要映射的不同系统来决定用户映射到哪个Redis实例。

目的
1、分区可以让Redis管理更大的内存,Redis可以使用所有机器的内存。如果没有分区,你只能使用一台机器的内存。
2、分区使Redis的计算能力通过简单的增加计算机得到成倍提升,Redis的网络宽带也会随着计算机和网卡的增加而成倍增长;

方法
1、范围分区:将不同范围的对象映射到不同Redis实例。例如:将id为0-100000的数据存储到R0(redis实例),将10000-200000的数据存储到R1;
2、散列分区:
步骤:1、使用散列函数(crc32或者hash)将键名转换为一个数字。例如:crc32(foobar)生成的散列值是93024922
2、对转换后的散列值进行取模,以产生一个0-3的数字,以便可以使这个key映射到4个Redis实例【根据自己的Redis实例来】中的一个。

拓展:
% :取模符号:求两个数相除的余数;

缺点:
1、涉及多个key会不被支持。他们可能被存储到不同的Redis实例中;
2、使用分区的时候,数据处理会非常复杂;为了备份必须从不同的Redis实例和主机同时收集RDB/AOF文件;
3、分区时要动态扩容或者缩容非常复杂;预分片技术可以很好解决问题;

如果Redis被当做缓存使用,使用一致性哈希实现动态扩容缩容;
如果Redis被当做一个持久化存储使用,必须使用固定的keys-to-nodes映射关系,节点的数量一旦确定不能变化;

预分片:
一开始就多设置几个Redis实例;这样即使数据不断增加,我们需要做的也就是将Redis实例从一台服务迁移到另外一台服务器而已,就不用考虑中心分区的 问题了;

实现方案
1、Redis集群:自动分片和高可用的首选方案。
2、Twemproxy:缓存代理系统;支持自动分区
3、支持一致性哈希的客户端

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值