【问题标题】:Big numbers in Redis Sorted SetRedis 排序集中的大数
【发布时间】:2021-09-19 07:20:14
【问题描述】:

我想将值作为分数存储在一个 redis 排序集中,最大为 10^24(如果可能,甚至是 2^256)

ZRANGE 的整数大小限制是多少?

在某些情况下,我正在尝试对自定义以太坊代币的顶级持有者进行排名。例如https://etherscan.io/token/0xdac17f958d2ee523a2206206994597c13d831ec7#balances

我想将余额保存在 Redis 数据库中并通过 node.js 访问它。我可以使用web3 检索实际余额,以防数据库崩溃或其他情况。关键是我希望对数据进行排序,并且我希望能够以极快的速度访问数据。

【问题讨论】:

    标签: redis biginteger sortedset


    【解决方案1】:

    Redis 文档中关于排序集的引用:

    Range of integer scores that can be expressed precisely

    Redis 排序集使用双 64 位浮点数来表示分数。在我们支持的所有架构中,这表示为 IEEE 754 浮点数,它能够精确表示 -(2^53) 和 +(2^53) 之间的整数。在更实际的情况下,-9007199254740992 和 9007199254740992 之间的所有整数都可以完美表示。 较大的整数或分数在内部以指数形式表示,因此您可能只得到十进制数的近似值,或您设置为分数的非常大整数的近似值。

    因此,当离开精确范围并且分数的近似值对您的用例来说已经足够好时,wikipedia says 2^1023 将是可能的最高指数。

    【讨论】:

    • 是的。我知道更大数字的近似值。我应该在问题中指定它。有没有办法让值保持准确?
    • 不,您受限于浮点数的精度,这对于大数字会变得不准确,并且没有指定解决方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多