在memcached中清除缓存时保留会话

时间:2013-05-16 04:39:42

标签: ruby-on-rails ruby-on-rails-3 caching memcached

我在Rails中使用memcached / dalli进行缓存。我还使用dalli_store作为会话商店。

问题是,当我清除视图缓存时,用户将自动从系统中注销。我认为这是因为memcached中的所有数据都被清除了,因此会话数据丢失了。

有没有办法避免这种情况?

3 个答案:

答案 0 :(得分:2)

最后我使用Redis作为会话存储。

gem 'redis-rails'

并在会话存储类型中指定它:

AppEx::Application.config.session_store :redis_store,

然后我可以使用Memcached作为纯缓存并清除它而不影响用户登录状态。

这也很好,因为当使用Memcached时,用户会在缓存已满时被踢出。现在用户会话持续的时间更长了。

答案 1 :(得分:0)

Rails.cache.clear清除所有缓存(无法指定元素)。 如果要清除缓存中的特定元素,则应使用Rails.cache.delete(key)(如果您希望在某些情况下删除某些元素,请将其挂钩)

答案 2 :(得分:0)

为什么要再次清除缓存?如果要从缓存中逐出某些陈旧数据并保持会话,则可以在缓存级别设置逐出属性。我不知道memcached是否有不同的驱逐选项。