使用 Redis,是否可能/合理地缓存动态列表查询?
如果我有一个包含论坛帖子的数据库。我想缓存搜索结果(这是一个文档列表),我应该/我可以使用 Redis 来缓存这些结果吗?
最佳答案
如果您直接缓存查询结果,那么您将在您的 Redis 缓存中复制大量数据,这不是内存效率高的。 您应该改为使用两个 redis 结构,
列表 -> 使用 LPUSH 存储与搜索查询匹配的 postid 列表,或者您也可以使用 CSV 字符串而不是 redis 列表。
字符串 -> 根据帖子 ID 存储论坛帖子内容。
例子: 当用户搜索“缓存”时,您会得到 postids 1,3,4,5,6, 当用户搜索“redis”时,您会得到 postids 1,2,4,5,8
对于搜索 'caching' ,您可以将 1,3,4,5,6 存储在带有键 'post_id_list#caching' 的 redis 列表中,当您检索它时,您将执行 MGET用于 1、3、4、5、6 论坛帖子的键。 类似地,对于搜索“redis”,您将使用键“post_id_list#redis”获取 redis 列表,然后对发布键 1、2、4、5、8 执行 MGET。
关于redis - 缓存列表的最佳 Redis 实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46269255/