开发者社区 问答 正文

Redis在分布式ID中的原理是什么?

Redis在分布式ID中的原理是什么?

展开
收起
kun坤 2020-04-24 11:16:56 568 分享 版权
1 条回答
写回答
取消 提交回答
  • Redis为单线程的,所以操作为原子操作,利用 incrby命令可以生成唯一的递增ID。 3.jpg

    单机单点,吞吐不够,加集群

    4.jpg

    假设N个节点,则步长为N,节点起始值为1,2,…… N。则三个节点生成的ID一定不同!想想为什么?以上信息条件可以转化为数学推理:

    1+x*N=2+y*N且x、y、N都为整成数且N不为1,试问等式存不存在?
    
    答:假设存在在起始值是1的节点上叠加x次之后等于起始值为2、叠加y次的值,
    既 “1 + x * N = 2 + y * N” 
    等式成立则:
    x * N = 1 + y * N
    x * N - y * N = 1
    (x - y) * N = 1
    (x - y) = 1 / N
    
    又因为 x、y都为整成数;
    所以x - y 必为整成数;
    又因为只有N等于1的时候,1/N才为整成数;
    与条件N为1不符合,所以不存在。
    
    

    同理可证 1+xN=3+yN和 2+xN=3+yN也是如此。

    2020-04-24 11:19:26
    赞同 展开评论