假设一个表存储文章信息:
id title
----------
1 Github Setup Guide
2 Github Troubleshooting
3 New Engineer Onboarding Setup
有一个查询经常尝试查找包含某个单词的文章,例如:
SELECT id FROM article WHERE title like '%Setup%'
为了提高性能,我们添加了缓存来存储
keyword -> article_ids
Setup -> [1, 3]
Github -> [1, 2]
因此,当用户尝试查找所有包含
Setup
的 id 时,将直接返回 [1,3]。
问题是,当表数据发生变化时,比如删除一条记录时,如何更新缓存?
我能想到的两个选择:
第一个选项看起来很合理,但是如果标题中有很多单词,或者结果数组很大,则更新缓存可能会很耗时。而且逻辑有点复杂。
有没有更好的方法来更新缓存?
正如您所说,当标题更改时,您需要
是否这样做或重新索引所有内容取决于文档的数量、唯一单词和标题长度。
作为替代方案 - 您是否知道Redis Stack具有搜索和查询功能,支持全文搜索?