redis(四)三节点分布式

1.分布式三个节点结构

使用多个节点对应数据生成的系统处理数据的读写工作,多个节点每个都处理了总数据量一部分数据—数据分片。

2.数据分片计算

大量数据生产即将发送给redis节点进行处理之前,必须计算完毕,某一条数据应该交给谁交给哪个节点去进行读写的工作,而且要考虑单调性。
单调性:存哪里了,就应该从哪去找数据

2.1hash取余
a、hash取余计算公式

可以实现一个简单的分片计算逻辑–hash取余可以完成,能够实现大量数据的切分计算
交给不同节点管理维护数据,并且保证了单调性,任何一条key-value如果存储在节点A,必定也能实现读取时找到节点A

java可以利用一个公式来完成hash取余算法的代码编写:
(key.hashCode()&Integer.MAX_VALUE)%n
key:表示redis要处理的key-value数据,key的取值范围就是字符串范围
key.hashCode():hashCode()方法,是Object类型的散列计算方法。可以将任意一个内存java
对象映射到对应的一个integer整数范围区间。并且,只要对象不变(equal),整数值不会发生变化的。但是可正可负。
key.hashCode()&Integer.MAX_VALUE:利用&做位的与运算,实现31位的保真运算,保证整数是正数。
保真运算:根据保真运算的1的位数,做N位保证,保证N位二进制和之前相同,其他的都是0。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值