2

首先,我的目的是当用户关闭浏览器时,用户会话数据应该过期。现在的问题是,我的服务器需要 memcached 才能正常工作。因此,我想从已关闭浏览器的 memcached 中删除该特定用户会话。我不想清除所有 memcached,以便剩余用户的会话仍然存在。

4

1 回答 1

2

在 Memcached 中,除非您想使用一些解决方法,否则无法列出特定命名空间中的所有键,我不建议您在生产中使用。

一种替代方法是将所有与用户相关的 Memcached 键存储在一个集合中(也存储在 memcached 中)。设置密钥是使用用户 id 生成的,因此您始终可以提前知道它的值,并且可以轻松检索它。

用户会话结束后,您可以获取包含用户密钥列表的项目,然后删除每个密钥。请记住,包含密钥列表的密钥的到期时间应大于任何特定于项目的项目。

另外值得一提的是,Redis默认支持 key 迭代和 set,你可以配置它像 Memcached 一样工作。你可能想试一试。

于 2012-10-18T14:16:37.723 回答