【发布时间】:2013-05-10 20:31:14
【问题描述】:
我使用 memcached/dalli 在 Rails 中进行缓存。我还使用dalli_store 作为我的会话存储。
问题是,当我清除视图缓存时,用户将自动退出我的系统。我想这是因为memcached中的所有数据都被清除了,所以session数据丢失了。
有没有办法避免这种情况?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 caching memcached
我使用 memcached/dalli 在 Rails 中进行缓存。我还使用dalli_store 作为我的会话存储。
问题是,当我清除视图缓存时,用户将自动退出我的系统。我想这是因为memcached中的所有数据都被清除了,所以session数据丢失了。
有没有办法避免这种情况?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 caching memcached
最后我改用 Redis 作为会话存储。
gem 'redis-rails'
并在会话存储类型中指定它:
AppEx::Application.config.session_store :redis_store,
然后我可以将 Memcached 用作纯缓存并清除它而不影响用户登录状态。
这也很好,因为在使用 Memcached 时,当缓存满时用户会被踢出。现在用户会话持续时间更长。
【讨论】:
Rails.cache.clear 清除所有缓存(不可能指定元素)。
如果你想从缓存中清除特定元素,你应该使用Rails.cache.delete(key)(如果你想在某些情况下删除它,请连接一些条件)
【讨论】:
为什么要再次清除缓存?如果您想从缓存中逐出某些陈旧数据并保持会话,则可以在缓存级别设置逐出属性。我不知道 memcached 是否有不同的驱逐选项可用。
【讨论】: