day24 redis 分区

redis 分区

分区就是分隔数据到多个redis实例的处理过程,因此每个实例只保存 key 的一个子集。

分区的优势
  • 通过利用多台计算机内存的和值,允许我们构造更大的数据库。
  • 通过多核和多台计算机,允许我们扩展计算能力;通过多台计算机和网络适配器,允许我们扩展网络带宽。
分区的不足

redis的一些特性在分区方面的表现不是很好:

  • 涉及多key的操作通常是不被支持的。
  • 涉及多key的redis事务不能使用
  • 使用分区时,数据处理较为复杂。如你需要处理多个 rdb/aof 文件,并且从多个实例和主机备份持久化文件。
  • 增加或删除容量也比较复杂。redis集群大多数支持在运行时增加、删除节点的透明数据平衡的能力,但是类似于客户端分区、代理等其他系统则不支持这项特性。然而,一种叫 presharding 的技术对此是有帮助的。

分区的类型

redis 有两种类型的分区。假设有4个redis实例 R0,R1,R2,R3 和类似 user1,user2这样的表示用户的多个key,对既定的 key 有多种不同方式来选择这个 key存放在哪个实例中。也就是说,有不同的系统来映射到某个Redis服务。

范围分区

最简单的分区方式就是按范围分区,就是映射一定范围的对象到特定的Redis实例。

如 ID 从 0到10000 的用户会被保存到实例 R0,从10001到20000 的用户会被保存到R1

这种方式是可行的,并且在实际中使用,不足就是要有一个区间范围到实例的映射表。这个表要被管理,同时还需要各种对象的映射表,通常对 redis 来说并非是好的方法。

哈希分区

另一种分区就是 hash分区,这对任何key都适用,也无需是 object_name 这种形式,像下方的描述一样简单:

  • 用一个hash函数,将key转为一个数字,如使用 crc32 hash函数对key foobar 执行crc32(foobar)会输出类似 93024922 的整数。
  • 对这个整数取模,将其转化为 0-3之间的数字,就可以将这个整数映射到4个redis实例中的一个了。93024922 % 4 = 2,就是说应该存到 R2 实例中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值