我有一个小型的实时聊天应用程序,现在想在Redis而不是MySQL中存储消息历史记录,只是因为它更快,更快。
但是,我希望我的用户能够搜索邮件历史记录。我怎样才能在Redis中实现这一目标?
经过一些谷歌搜索后,我发现我必须在Redis中创建所有单词的索引,但这似乎有点矫枉过正。
更好的方法是将数据同步回MySQL并让用户在那里搜索表吗?
我真的想将Redis用于历史记录部分,因为我的测试显示它在我的情况下要快得多。
另一种方法的想法?
答案 0 :(得分:2)
我会说, Redis是您特定用例的错误选择。检查Use Cases of Redis上的stackoverflow帖子以获得一些见解。
你说redis要快得多,但是如果我们没有可比较的解决方案怎么说呢? Redis命令将比等效的 SQL命令快得多,但是一旦你开始创建非目的数据结构,你就会杀死Redis擅长的东西。
更多原因:
<强> 1。非结构化内容
例如,如果您有一个固定的搜索结构,可能会考虑使用,例如,您只允许进行用户/数据搜索。你的密钥可能看起来像
user:message_time
您是否正确搜索自由格式文本,您可能最好使用擅长分析元数据并找出所需内容的内容,可能类似于elasticsearch(我自己不是专家)。
<强> 2。 Redis不是一个像样的存档
对于聊天应用程序,我会想象使用Redis作为最近对话的缓存,但最后您不希望Redis存储您的所有邮件和元数据以进行搜索和索引,是吗?如果您的复制不是原始的,那么您可能会丢失所有数据,最后Redis是一个内存数据库。
第3。关键扫描噩梦
我甚至无法想象如何使用Redis,也许其他一些用户可以做到这一点。你会对钥匙进行什么样的扫描?你可能需要做多个查询来获得一些体面的东西。
答案 1 :(得分:0)
Redis并不是最好的工具,但它可以,请查看https://github.com/tj/reds作为示例。