大家好!
我最近对 Discourse 实例进行了一些负载测试,发现当反复获取同一个评论线程时,Redis 缓存命中率不升反降,这有点出乎意料(在读写混合的情况下,缓存命中率高达 85%,但在 100% 读请求的情况下,命中率最低跌至 22%)。
我在代码库和论坛中搜索了一番,但 Redis 缓存的具体利用方式对我来说仍有些模糊。README 中写道:
我们使用 Redis 作为缓存和临时数据存储。
我使用 redis-cli 转储了上述负载测试期间发送到 Redis 缓存的命令,主要看到了针对计划任务的“get”命令,以及以“__mb_backlog_id_n_”为前缀的键(我相信这指的是 MessageBus 相关功能)。
我有以下几个问题:
- 是否有“简单”的方法让我在代码库中搜索哪些数据被缓存到了 Redis?我很希望能自己回答这些问题,但遗憾的是,我对 Ruby on Rails 应用(甚至 Ruby 本身)并不太熟悉。

- 登录/登出状态是否会影响缓存命中率?供参考,上述负载测试使用的是管理员 API 密钥。
- 像帖子内容这样经常被查询且相对静态的数据是否会被缓存在 Redis 中?还是说 Redis 主要用于 Sidekiq 等的作业调度和后台处理?
提前感谢!