redis 在多个实例之间如何拆分数据

  redis instance 与key的映射

  1.range partition 指定redis实例进行映射

   redis instance:R0 R1 R2 R3

   key set : 0-10000  10001-20000  20001-30000 30001-40000

   这样就可以这样映射,R0  0-10000     R1 10001-20000      R2 20001-30000     R3 30001-40000

   但是这种映射关系,必须引入一张映射表,来实现实例跟keys之间映射关系,也就是说,每次数据更新,都必须更新映射表和相应的redis实例

  2. hash partition  使用一致性hash分片

     这种方式,需要引入一种hash算法,比如crc32,md5,可以根据key名,生成一致性hash,然后根据模运算,生成一个有限的序列,比如0-9,从而实现序列跟redis实例之间的映射关系 ,例如,如果有10个redis实例,那么我们可以使用crc32(key) % 10来获取对应的实例

 如何实现分区呢?

  1.client side partition 使用多个redis客户端分区

  2.proxy assisted partition 代理辅助分区,redis 客户端向redis代理发送请求,而不直接跟redis实例进行通信,然后proxy根据配置文件,来查找对应的redis实例

  并且将响应告诉给客户端

  3.query route 查询路由,发送对某个redis实例的查询操作,然后由redis实例进行路由,重定向到相应的redis实例

  分区缺点:

  1.包含映射到不同实例的多个key操作是不支持的

  2.不支持涉及到多个key的事务

  3.数据处理和数据恢复的复杂性增加,生成恢复文件时,必须合并所有主机和实例上的所有的aof或者rdb文件

  4.在客户端分区和代理分区的模式下,不支持扩容,在其它模式下,扩容时透明的

  

  

  

  

转载于:https://www.cnblogs.com/kivmi/p/3629716.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值