Redis集群如何使用pipeline操作

1. 背景

          当我们的产品需要一款分布式缓存组件时,一般会考虑Redis集群. Redis集群是一种分布式的,高可用性的缓存组件,

大多数情况下存储一些经常使用的,变动不频繁的数据,例如用户信息, 离线计算的某类数据等. 但是,随着用户量的大量增

加, 如何快速的将海量的数据导入Redis集群变得越加紧急, 传统的逐条插入Redis集群的方式已经无法满足我们的需求,

因为这种方式的延迟会随数据的倍增而线性增加.

 

2. 问题描述

         1) Redis集群包含多个节点,不同的key可能存放在不同的节点,如何拆分?

         2) 如何批量往某个节点导入大量数据?

         3) 如何保证数据导入的可靠性 ?

 

3. 使用pipeline支持批量操作

        为了解决上述3个问题,我们需要先了解Redis集群节点分布的原理, redis集群划分为16384个slot, 这些slot交由所有的master节点负责, 每个节点负责其中一部分.

1. 键值对保存到Redis之前, 先对key进行CRC16哈希算法得到一个slot值, 然后根据查看该slot属于哪个master节点负责, 就映射到这个节点上。

2.  每个Master节点会被分配一个Slot段,对应着0-16384的一段,每段Slot不能重复也不能缺失,否则会导致对象重复存储或无法存储。

3, Master节点之间也互相监听,一旦有Master节点退出或者加入,会按照Slot为单位做数据的迁移。例如某个Master节点如果掉线了,首先会尝试从该Master节点的从节点中选举出一个新的Master节点, 如果不存在从节点,那么这个Master节点负责Slot将会平均分摊到其他的Master节点上,由于其他Master节点本身维护的Slot还会在自己身上不会被重新分配&#x

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值