求一个redis 实时并列排行榜解决方案-问答-阿里云开发者社区-阿里云

开发者社区> 落地花开啦> 正文

求一个redis 实时并列排行榜解决方案

2016-02-20 18:52:02 3547 1

游戏项目中使用redis的Sorted-Sets 做排行榜,对于并列排行处理的机制为:
因为redis存储的是double类型,为64位
所以对于分数相同的情况,采用按照时间来排序。
为此,现在的设计为: double 64位 , 拆分为: 高32位 , 低32位
其中高32位存储真正的分数,低32位存储当时与某一个时刻的时间差(秒),这样就很好解决了并列排名,
不过支持的最大分为32位,即一个int
问题:
因为redis内部使用double类型,关于double的本身就有精度问题,
在<<计算机操作系统>>中,double 64位, 其中63位是符号位,62-52位位阶码,51-0 位表示尾数。
其中可以确定的说,在double中,只有低52位(尾数位部分)才是精确的
所以,在我的redis排行榜设计中,其中低32位为时间戳,高32位为真正的分数,这样只有高32位中的低20位才是有效数位,
因此,这样最多就能最大为支持100w的数据(因为高32位的高12位不能用,精度不准确)
求助:
有什么更好的设计方案吗?实现分数相同,按照时间来排序?

取消 提交回答
全部回答(1)
  • 落地花开啦
    2019-07-17 18:45:41

    将double转成字符串,手动指定高位的分数

    0 0
相关问答

10

回答

【精品问答合集】Hbase热门问答

hbase小能手 2019-05-29 14:37:26 120262浏览量 回答数 10

38

回答

干货分享:DBA专家门诊一期:索引与sql优化问题汇总

xiaofanqie 2014-12-25 15:13:38 91772浏览量 回答数 38

19

回答

[@倚贤][¥20]学习Java后端的疑惑

小江同志 2018-10-24 16:11:21 132243浏览量 回答数 19

110

回答

OSS存储服务-客户端工具

newegg11 2012-05-17 15:37:18 292307浏览量 回答数 110

38

回答

安全组详解,新手必看教程

我的中国 2017-11-30 15:23:46 256885浏览量 回答数 38

62

回答

磁盘原地扩容功能4月22日正式上线

艳馨 2015-04-21 23:40:33 96095浏览量 回答数 62

23

回答

【精品问答合集】Redis热门问答

李博 bluemind 2019-05-29 16:36:15 126313浏览量 回答数 23

2

回答

区域选择帮助

fanyue88888 2012-12-07 15:54:30 204020浏览量 回答数 2

11

回答

【精品问答合集】MongoDB热门问答

李博 bluemind 2019-05-29 16:50:19 120885浏览量 回答数 11

13

回答

【精品问答合集】Java热门问答

李博 bluemind 2019-05-29 16:00:45 124839浏览量 回答数 13
+关注
落地花开啦
喜欢技术,喜欢努力的人
0
文章
7824
问答
推荐问答
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载