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

搜索Redis数据库的值

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

搜索Redis数据库的值

Redis适用于需要以很高的频率访问和更新数据并且可以从数据结构(哈希,集,列表,字符串或排序集)的使用中受益的用例。它可以满足非常具体的用例。如果您有一个非常灵活的搜索之类的通用用例,那么为此目的而构建的某种东西(例如elasticsearch或SOLR)会更好地为您服务。

就是说,如果您必须在Redis中执行此操作,这就是我的操作方式(假设用户可以共享姓名和电话号码):

name:some_name -> set([id1, id2, etc...])name:some_other_name -> set([id3, id4, etc...])phone:some_phone -> set([id1, id3, etc...])phone:some_other_phone -> set([id2, id4, etc...])id1 -> {'name' : 'bob', 'phone' : '123-456-7891', etc...}id2 -> {'name' : 'alice', 'phone' : '987-456-7891', etc...}

在这种情况下,我们将为每个名称(以“ name:”为前缀)和每个电话号码(以“
phone:”为前缀)创建一个新密钥。每个键都指向一组ID,这些ID具有用户想要的所有信息。例如,在搜索电话时,您将执行以下操作:

HGETALL 'phone:123-456-7891'

然后遍历结果,并以您选择的语言返回每个信息(在本示例中为名称)的任何信息(您可以在Redis框上的服务器端Lua中完成整个操作,以更快地进行操作并避免网络往返第四,如果您愿意):

for id in results:    HGET id 'name'

您需要付出的代价是,拥有给定电话号码的用户数量在

O(m)
哪里
m
,由于对速度的优化,这将是对Redis的非常快速的操作。在您的情况下,这可能会适得其反,因为您可能不需要这么快的时间,并且您希望进行灵活的搜索,但这就是您要这样做的方式。



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

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

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