ruby-on-rails - Redis 中缓存的最佳 expire_in 值

标签 ruby-on-rails caching redis

我想在我的 Rails 应用程序中使用 gem "redis-store" 作为缓存存储。与 memcached 不同,redis 不会清除未使用的 key ,但我可以在每个 key 上使用 EXPIRE 命令(通过 :expire_in 选项)来限制每个 key 的生命周期。

然后我想使用我模型的cache_key(包括idupdated_at)作为redis key的一部分,用于缓存。因此,当更新模型时,将创建新的缓存键,而永远不会使用旧的缓存键。

那么问题来了,选择哪个过期时间呢?如果设置得太小,它会消除缓存的好处,如果太长 - 它会用未使用的数据填充 redis,这可能(可能)会降低性能。中庸之道在哪里?

最佳答案

我建议使用 Redis 的 LRU 过期策略,让 Redis 自己过期最近最少使用的键。这样,您就不必自己担心 key 过期了。

按照您的建议使用模型的 cache_key 确实会在模型更改时生成新 key 。您的 View 将不再使用该模型的“旧”键,Redis 最终会将它们过期。

参见 http://redis.io/topics/config有关如何将 Redis 配置为 LRU 存储的信息。

关于ruby-on-rails - Redis 中缓存的最佳 expire_in 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14280724/

相关文章:

ruby-on-rails - 什么时候在 compass 中使用分音?

google-app-engine - 在 Google App Engine 节点中缓存的最佳方式

node.js - 在 VS 代码调试器中配置设置以运行 docker

ruby-on-rails - acts_as_api rails 查询非相关字段

ruby-on-rails - 引用所有依赖对象的集合

javascript - 将实时更新传递给 Stripe Checkout 金额

ruby-on-rails - rails : form_for with json: undefined method to_model for Hash

caching - 清除 CMake 的内部缓存

javascript - js 和 css 版本控制

node.js - 在特定时间向用户发送多个通知