redis - 缓存列表的最佳 Redis 实践

标签 redis

使用 Redis,是否可能/合理地缓存动态列表查询?

如果我有一个包含论坛帖子的数据库。我想缓存搜索结果(这是一个文档列表),我应该/我可以使用 Redis 来缓存这些结果吗?

最佳答案

如果您直接缓存查询结果,那么您将在您的 Redis 缓存中复制大量数据,这不是内存效率高的。 您应该改为使用两个 redis 结构,

  1. 列表 -> 使用 LPUSH 存储与搜索查询匹配的 postid 列表,或者您也可以使用 CSV 字符串而不是 redis 列表。

  2. 字符串 -> 根据帖子 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/

相关文章:

Redis 和关系

java - Jedis HMSET map 插入顺序

Redis 设置操作选项

python - Django Redis错误未知命令 'BZPOPMIN'

nosql - 如何在 Redis 中查询和表示对象/哈希之间的关系

redis - 停止redis导致/var/run/下的/redis/文件夹被删除

caching - 用于 hget 和 hset 命令的 Redis 基准测试

node.js - NodeJS connect-redis 与 nodejitsu URI

Redis config dir周期性修改为 "/var/spool/cron",报 "Failed opening .rdb for saving: Permission denied"错误

javascript - 你能安全地将 JavaScript 类实例存储在 Redis 中吗?