首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在redis中搜索

问在redis中搜索
EN

Stack Overflow用户
提问于 2015-03-19 05:15:32
回答 2查看 301关注 0票数 0

我有一个小的实时聊天应用程序,现在我想用Redis代替MySQL存储消息历史记录,因为它的速度要快得多。

但是,我希望我的用户能够搜索消息历史记录。我怎样才能在Redis中做到这一点?

经过一些谷歌搜索后,我发现我必须在Redis中创建一个所有单词的索引,但这似乎有点过头了。

更好的方法是将数据同步回MySQL,让用户在那里搜索表吗?

我真的很想使用Redis作为历史部分,因为我的测试表明它在我的情况下要快得多。

有没有其他方法的想法?

EN

回答 2

Stack Overflow用户

发布于 2015-03-19 19:37:45

我将冒险说,对于您的特定用例来说,Redis是错误的选择。请查看Use Cases of Redis上的stackoverflow帖子以获得一些见解。

你说redis要快得多,但如果我们没有解决方案可以与之相比,你怎么能说呢?Redis命令将比等价的SQL命令快得多,但是一旦您开始创建无意义的数据结构,您就会扼杀Redis擅长的东西。

还有更多的原因:

1.非结构化内容

例如,如果你有一个固定的搜索结构可以考虑,例如,你只允许用户/数据搜索。你的钥匙可能看起来像

代码语言:javascript
复制
user:message_time

如果您对自由格式的文本进行了适当的搜索,那么使用一些擅长分析元数据并找出所需内容的工具可能会更好,可能是类似于elasticsearch的工具(我自己不是专家)。

Redis 2.不是一个好的归档

作为一个聊天应用,我会想象使用Redis作为最近对话的缓存,但最终你不会希望Redis存储所有用于搜索和索引的消息和元数据,对吗?如果你的复制不是原始的,你可能会丢失所有的数据,最终Redis是一个内存数据库。

3.键扫描噩梦

我甚至不能想象如何使用Redis做到这一点,也许其他一些用户会这样做。你会在钥匙上做什么样的扫描?您可能需要执行多个查询才能获得像样的结果。

票数 2
EN

Stack Overflow用户

发布于 2015-03-19 22:03:01

Redis并不是最好的工具,但它是可能的,请查看https://github.com/tj/reds的示例。

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

https://stackoverflow.com/questions/29132831

复制
相关文章

相似问题

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