4

我在 Rails 中使用 memcached/dalli 进行缓存。我也dalli_store用作我的会话存储。

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

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

4

3 回答 3

2

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

gem 'redis-rails'

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

AppEx::Application.config.session_store :redis_store,

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

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

于 2014-01-22T09:41:28.557 回答
0

Rails.cache.clear清除所有缓存(不可能指定元素)。如果你想从缓存中清除特定元素,你应该使用Rails.cache.delete(key)(如果你想在某些情况下删除它,连接一些条件)

于 2013-05-16T09:26:17.067 回答
0

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

于 2013-05-29T07:25:17.157 回答