为了避免一致性哈希只影响相邻节点造成节点分配压力,ShardedJedis会对每个Redis节点根据名字(没有,Jedis会赋予缺省名字)会虚拟化出160个虚拟节点进行散列。
根据权重weight,也可虚拟化出160倍数的虚拟节点。
用虚拟节点做映射匹配,可以在增加或减少Redis节点时,key在各Redis节点移动再分配更均匀,而不是只有相邻节点受影响。
采取如下办法:
1.判断该数据是否存在,如果存在则取出id(自增序列)
2.如果上述不存在,则进入一个同步方法中,执行查询sequence的代码,并将结果hsetnx到redis中。借助redis的hsetnex的第一次操作能够成功,第二次操作不能成功的方式,来实现该分布式一致性
3.取到上一步中的id,并在hsetnx返回成功的线程中将数据入库!
用户登录
还没有账号?立即注册
用户注册
投稿取消
| 文章分类: |
|
还能输入300字
上传中....
M110934736