我目前正在将数据存储在从数据库中拉出的用户会话中,并且在用户会话期间很少发生更改。这样,每次加载新页面时我都不必重新查询数据。但是,我希望有一种方法,以便在数据发生更改时,部分用户会话未设置。这将强制应用程序查询新数据,然后再次将其存储在会话中。
让我们说我存储了用户在会话中也可以访问的博客帖子数量。当创建用户将具有访问权限的新博客帖子时,我希望激活事件监听器并取消设置存储该事件的所有当前活动会话的部分。然后我会等到用户加载另一个页面然后刷新它或者某个时候“预热”这个缓存。
这可能是一个不好的例子,因为它可能会更频繁地更新,并且可能有更好的方法,但这只是一个例子。
如果您可以提供一种方法来访问所有会话并仅修改存储此数据的部分,那将是完美的。
编辑:更新了示例以更接近问题。我试图做用户特定的这么简单的键=>值对可能不起作用,因为密钥需要是用户/唯一密钥标识符,并且值将是他们也可以访问的所有博客帖子。
答案 0 :(得分:3)
不要将用户会话用作缓存。它会让你头痛,会让事情变得复杂。
如果出于性能原因只想缓存用户独立数据,则应考虑将memcached用作内存中的key =>值存储缓存。你几乎找不到更快的东西。
如果您不想安装memcached,但已经安装了APC,您还可以使用APC数据存储缓存。