关于雪花ID算法的介绍有很多文章,就不画蛇添足了,当然雪花ID算法也有一个问题是时间回拨的问题,这个可以参考以下两个链接去了解:
https://github.com/baidu/uid-generator
https://zhuanlan.zhihu.com/p/77737855
但是我们把这个64位的ID保存到redis的zset的时候,却面临一个zset的score溢出问题,原因是score是64位double类型(float64),关于这个问题有开发人员提出过解决办法,详见:https://blog.csdn.net/Nassue_sn/article/details/109011883和https://cloud.tencent.com/developer/article/1525534.
他们解决办法的相同点就是把雪花ID变成52位(float64的整数位精度是52位)以期不会溢出,但是这也势必导致ID的范围变小,比如他们的业务就是保存15天的消息,这样的修改并不是一个满足复杂业务场景的实现,20年和21年断断续续修改redis server的源码将score的类型从float64改为int64位,并且同步修改php redis和go redis的client接口实现,因用于公司新兴业务,未经公司同意尚未能公开源码,实际上也不难修改啊
修改redis zset的score为64位整形以支持雪花ID算法
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- Sorted Set,和set相比,增加权重参数score(浮点数)有序排列。Redis唯一可根据成员访问,又可以...
- 一、Redis基础简介 1、Redis官方介绍 Redis是一个开源(BSD许可),内存数据结构存储,用作数据库,...
- 说明本次redis集群安装在rhel6.8 64位机器上,redis版本为3.2.8,redis的gem文件版本为...
- 来自公众号:是Kerwin啊作者:柯小贤 Windows Redis 安装 链接: https://pan.bai...