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

dee*_*392 5 php memcached

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

[userstats_1] => Array
        (
            [forum_posts] => 178
            [forum_likes] => 16
            [forum_dislikes] => 0
            [now_online] => 1
        )
Run Code Online (Sandbox Code Playgroud)

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

[userstats_forumbrowsing_1] => Array
    (
        [forum_browsing] => 'Foobar'
    )
Run Code Online (Sandbox Code Playgroud)

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

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

Eam*_*ain 5

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

所以你有两个选择:

  1. 做你提到的"疯狂"事情:使用单个键存储数组,get整个数组,修改一个元素,然后set整个数组.
  2. 使用每个部分单独的密钥,并getset单独他们.

哪个更好取决于部件的相对尺寸,它们的使用模式以及保持一致性的重要性.

或者另一种选择是不使用memcached,而是使用Redis,它扩展了简单的键值模型以包含数据类型,包括 支持所需更新类型的哈希.