PHP& APC:缓存中有多个密钥的一个对象?

时间:2010-02-01 08:57:47

标签: php caching apc

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

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

在其他情况下,我将拥有用户ID,并希望根据此选择。

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

因此,假设我使用“User.user_id.123”键将其放入其中一次,使用“User.user_name.JoeSmith”键入一次。

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

有没有办法将一个对象放入带有多个密钥的APC缓存中以便以后查找?

2 个答案:

答案 0 :(得分:0)

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

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

  • 如果用户值发生变化,您确定要使缓存失效吗?
  • 对象是否引用其他对象?一旦引用的对象发生更改,缓存是否会失效?

答案 1 :(得分:0)

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