在Memcache中更新/设置缓存数组的元素

时间:2012-02-17 15:38:02

标签: php memcached

我使用的CMS默认实现了memcached,我正在努力扩展它。一个键包含一系列用户信息,如userstats_id,并包含论坛帖子计数,他们喜欢等等的帖子数量等信息。关键看起来像这样:

[userstats_1] => Array
        (
            [forum_posts] => 178
            [forum_likes] => 16
            [forum_dislikes] => 0
            [now_online] => 1
        )

我正在扩展此密钥的使用,因为我还想存储用户正在浏览的特定论坛,例如:

[userstats_forumbrowsing_1] => Array
    (
        [forum_browsing] => 'Foobar'
    )

如果我能在[userstats_1]中拥有这个更好,那当然更有意义。因此,考虑到这种情况比缓存数组的其他元素更频繁地更改,获取和设置缓存数组的元素的最佳方法是什么?

我想出的唯一方法是复制数组,操纵它然后在缓存中重新设置它,但这看起来很疯狂。谢谢!

1 个答案:

答案 0 :(得分:5)

不,遗憾的是,因为memcached是一个简单的键值存储,您无法修改或访问单个键所解决的值的一部分。

所以你有两个选择:

  1. 你提到“疯狂”的事情:使用单个键存储数组,get整个数组,修改一个元素,然后set整个数组。
  2. 为每个部分使用单独的密钥,并分别getset
  3. 哪个更好取决于零件的相对尺寸,它们的使用模式以及保持一致性的重要性。

    或者另一种选择是不使用memcached,而是使用Redis,它扩展了简单的键值模型以包含data types,包括支持您想要的更新类型的hashes。 p>