美文网首页
修改redis zset的score为64位整形以支持雪花ID算

修改redis zset的score为64位整形以支持雪花ID算

作者: 耐寒 | 来源:发表于2021-01-28 15:34 被阅读0次

关于雪花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/109011883https://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算

    关于雪花ID算法的介绍有很多文章,就不画蛇添足了,当然雪花ID算法也有一个问题是时间回拨的问题,这个可以参考以下两...

  • scrapy-redis去重的修改

    将redis set集合 改为zset 且score为时间戳 key值修改scrapy-redis下的去重文件du...

  • redis 学习(7) -- 有序集合

    redis 学习(7) -- 有序集合 zset 结构 有序集合:有序、不能包含重复元素 每个节点包含:score...

  • Redis 和 memcached 的区别

    redis 支持更多的数据结构,如:list,set,zset,hash redis 支持数据的备份,master...

  • Redis面试题

    Redis支持的数据类型? String、List、Set、Hash、zSet 什么是Redis持久化?Redis...

  • Redis深度历险-基数树

    Redis深度历险-基数树 Redis中的基数树是一种有序字典树,zset也是一种有序字典但是是按照score进行...

  • redis常见问题

    1.Redis支持的数据类型?字符串、hash、list、set、zset2.什么是Redis持久化?Redis有...

  • Redis 知识点1

    Redis是开源免费的,遵守BSD协议;Redis支持key-value类型数据,也提供list,set,zset...

  • Redis中的有序集合为什么叫zset?

    redis中zset是有序集合,Sorted Set为什么为以“z”开头,这个“z”代表什么含义呢? https:...

  • 限流器

    如果是简单做一个限流器的话,利用zset也可以实现,以score作为时间戳,然后的话,value为任意(保证不重复...

网友评论

      本文标题:修改redis zset的score为64位整形以支持雪花ID算

      本文链接:https://www.haomeiwen.com/subject/wttxtltx.html