首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Redis中的嵌套查询

Redis中的嵌套查询
EN

Stack Overflow用户
提问于 2016-04-08 02:58:48
回答 2查看 753关注 0票数 0

我是redis的新手。我必须使用redis实现一个mac地址表缓存。缓存中的每个条目都将包含以下信息

(1)。Mac地址-6字节数组

(2)。vlan -整数值

(3)。接口id -整数值(如果需要,可以改为字符串)。

Mac-address + Vlan的组合在整个缓存中是唯一的。所以这可能是关键?

我希望能够以多种方式查询我的缓存,例如:

(1)。获取所有具有vlan == 20的条目

(2)。获取vlan接口为20、== -id为== 5000的所有条目

在Redis中存储这个最好的方法是什么?任何帮助都是非常感谢的。谢谢,莫

EN

回答 2

Stack Overflow用户

发布于 2016-04-08 05:17:38

假设只有这两个查询,将数据放在一个排序集中。

ZADD一个新的MAC时,使用一个0的分数,并用以下方式构造你的成员(一个字符串):

代码语言:javascript
复制
ZADD MAC-address-table 0 <vlan>:<interface-id>:<MAC>

在上面的示例中,请确保vlan和interface-id都是宽度固定的,并根据需要用0填充。假设它们是32位无符号整数,则如下所示:

代码语言:javascript
复制
ZADD MAC-address-table 0 00020:05000:XYZCBA

使用0作为分数将导致排序集按字典顺序排序,因此您可以使用ZRANGEBYLEX。第一个查询是:

代码语言:javascript
复制
ZRANGEBYLEX MAC-address-table 00020: 00020:\xff

(\xff是255个字符,作为最后一个字符意味着它是词法顺序中的最后一个字符)。类似地,第二个查询:

代码语言:javascript
复制
ZRANGEBYLEX MAC-address-table 00020:05000 00020:05000\xff
票数 0
EN

Stack Overflow用户

发布于 2016-04-14 02:54:58

这就是为什么我对你上面的问题发表评论的原因。或者,您要么需要使用额外的排序集,要么需要使用另一种称为重新维度的技术-请参阅Redis.io上的二级索引文档页面

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36484904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档