我使用的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]中会更好,因为这当然更有意义。因此,考虑到这种变化比缓存数组的其他元素更频繁,获取和设置缓存数组的元素的最佳方法是什么?
我想到的唯一方法是复制数组,操纵它,然后在缓存中重新设置它,但这似乎很疯狂。谢谢
否,不幸的是,因为memcached是一个简单的键值存储,所以您不能仅修改或访问由单个键寻址的值的一部分。
所以你有两个选择:
- 做你提到的"疯狂"的事情:使用单个键存储数组,
get
存储整个数组,修改一个元素,然后set
存储整个数组 - 对每个部件使用单独的密钥,并分别使用
get
和set
哪个更好取决于零件的相对尺寸、使用模式以及保持一致性的重要性。
或者另一种选择是不使用memcached,而是使用Redis,它扩展了简单的键值模型,以包括数据类型,包括支持所需更新类型的哈希。