1

我正在使用 APC 在 PHP 应用程序中实现对象缓存。

问题是,有时我会根据不同的标准从数据库中选择一些东西。例如,当用户登录网站时,我只有他的用户名和密码,所以我将根据用户名从数据库中进行选择。

在其他情况下,我将拥有用户 ID,并希望以此为基础进行选择。

每次选择用户时,我都想将对象添加到缓存中。

所以假设我用“User.user_id.123”键把它放在那里一次,用“User.user_name.JoeSmith”放一次。

然而,这确实意味着我只是将同一个对象两次放入我的缓存中,对吗?这似乎效率不高。

有没有办法将一个对象放入具有多个键的 APC 缓存中以便以后找到它?

4

2 回答 2

0

您可以将用户 ID 放入缓存中,例如User.user_name.JoeSmith=123.

但我怀疑将这些值存储在缓存中的效率。它肯定会在运行时加快速度,但可能会在开发过程中导致几个问题(因为您基本上将相同的值存储两次,一次在数据库中,一次在缓存中)。一些事情立即跳入我的脑海:

  • 如果用户值更改,您确定使缓存无效吗?
  • 对象是否引用其他对象?一旦引用的对象发生更改,缓存是否会失效?
于 2010-02-01T09:09:59.850 回答
0

更新:这确实意味着将同一个对象两次放入缓存中,这就是我最终要做的。只需要小心在删除或更新时使用所有可能的键从缓存中清空对象。

于 2011-09-04T00:52:10.400 回答