我想使用redis 高效搜索 IPv6子网范围。
我想过将IPv6数字地址存储在redis中并按范围搜索。 这些是 128位整数,例如:
import ipaddress
int(ipaddress.ip_address(u'113f:a:2:3:4:1::77'))
> 22923991422715307029586104612626104439L
并按范围查询:
ZRANGEBYSCORE numerics <subnet-S-start> <subnet-S-end>
HOWEVER ,redis排序集可以保持最高2 ^ 53的分数,所以我的所有大整数都被修剪掉了,我的精度也在下降。
有没有办法在redis中保存如此大的数字而不会丢失精度?
你有更好的建议吗? 感谢
答案 0 :(得分:4)
您可以使用词法范围API,它将完全适合您。 https://redis.io/commands/zrangebylex
插入得分为0的地址,我甚至认为您不需要将它们编码为数字,只需填充单个字节,您就应该能够查询范围。