栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

带Redis的多参数匹配器

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

带Redis的多参数匹配器

您要在此处执行的操作是倒排索引。

对于每一列,将其映射到“集合”。然后,您可以将这些集合相交以获得结果。

因此,

APPLE: RED ROUND FRUIT
将映射到以下插入:

SADD p1:RED APPLESADD p2:ROUND APPLESADD p3:FRUIT APPLE

然后,假设我要查询

* ROUND FRUIT
,我会这样做:

SINTER p2:ROUND p3:FRUIT

此命令获取

p2:ROUND
集合和
p3:FRUIT
集合中项目的交集。这将返回所有的项目
ROUND
FRUIT
,不关心什么
p1
是。

其他一些例子:

SMEMBERS p1:GREENSINTER p1:RED p2:ROUND p3:FRUITSUNIOn p1:RED p1:GREEN

我的上述答案将使用某种计算能力,因为相交操作为

O(N*M)
。这是一种占用大量内存的方法,但由于它可以有效地预先计算索引,因此检索速度更快。

对于每种属性组合,创建一个存储一组的键:

因此,

APPLE: RED ROUND FRUIT
将映射到以下插入:

SADD RED:ROUND:FRUIT APPLESADD :ROUND:FRUIT APPLESADD RED::FRUIT APPLESADD RED:ROUND: APPLESADD RED:: APPLESADD :ROUND: APPLESADD ::FRUIT APPLESADD ::: APPLE

然后,要查询,您只需访问相应的键。例如,

* ROUND FRUIT
将仅仅是

SMEMBERS :ROUND:FRUIT

显然,当您有很多尺寸时,这在内存方面根本无法很好地扩展,但是检索结果将非常快捷。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/376286.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号