0

我想使用 redis 有效地搜索 IPv6 子网范围

我想将 IPv6 数字地址存储在 redis 中并按范围搜索它们。这些是128 位 ints,例如:

import ipaddress
int(ipaddress.ip_address(u'113f:a:2:3:4:1::77'))

> 22923991422715307029586104612626104439L

并按范围查询:

ZRANGEBYSCORE numerics <subnet-S-start> <subnet-S-end>

但是,redis sorted-sets 可以保持高达 2^53 的分数,所以我所有的大整数都被修剪了,我正在失去精度。

有没有办法在redis中保存这么大的数字而不会丢失精度?

你有更好的建议吗?谢谢

4

1 回答 1

5

您可以使用词法范围 API,它将完全适合您。https://redis.io/commands/zrangebylex

插入得分为 0 的地址,我什至认为您不需要将它们编码为数字,只需填充各个字节,您应该能够查询范围。

于 2017-07-16T21:24:38.230 回答