redis ZRANGEBYLEX和ipv6

时间:2018-08-13 13:37:58

标签: redis ipv6 int128

要继续关注此帖子,请访问:redis store 128 bit number

如何使用ipv6地址进行词典搜索。

如果我这样使用它:

ZADD index 0 8000::/24
ZADD index 0 2001:db8:1f89::/48
ZADD index 0 2001:db9:1f89::/48
ZADD index 0 1234:5678:abcd:effa:4200:1972::/112

ZRANGEBYLEX index [2001:0db8:0000:85a3:0000:0000:ac1f + LIMIT 0 1
1) "2001:db8:1f89::/48"

但是:

ZRANGEBYLEX index [2001:1db8:0000:85a3:0000:0000:ac1f + LIMIT 0 1
1) "2001:db8:1f89::/48"

一个主意?

1 个答案:

答案 0 :(得分:0)

将CIDR转换为IP范围并将其添加到ZSET起始IP。在添加IP之前,将其数字填为零! 例: 2001:db8:cafe:1:0:0:0:100-> 2001:0db8:cafe:0001:0000:0000:0000:0100。

并使用“ ZREVRANGEBYLEX键[2001:0db8:cafe:0001:0000:0000:0000:0200-LIMIT 0 1”)来获取范围的起始IP。