当我使用Memcached
时,是否可以仅更新值数组中的一个元素?假设我设置了一个键boots
,该键的值为:
(key)boots =>
(value)[
[
'id' => 1,
'type' => 'winter boots'
],
[
'id' => 2,
'type' => 'summer boots'
],
[
'id' => 3,
'type' => 'spring boots'
]
]
如果我更新(假设'夏季靴子'成为所有季节靴子')我应如何仅针对来自MySQL
的更新产品检索新数据数据库表并仅刷新该特定产品,而不是重新获取所有产品数据并更新整个值(我的意思是这是memcached
正常工作的方式吗?)?我应该使用某种排序算法,如merge sort
,quicksort
,还是我必须使用另一种缓存系统?我希望我解释一下我正在寻找什么。提前谢谢!
答案 0 :(得分:0)
我认为可行的唯一方法是获取存储在memcache中的整个对象,然后更改它并将其存储回来。
还有第二种方式: 查看更新存储在memcache中的元素的频率以及存储元素的大小。
如果它是非常大的数组,那么将整个对象存储在memcache中是没有意义的。 那么最好将每个条目存储为不同的键,看起来像这样:
(key)boots_1 => (价值)冬靴
(key)boots_2 => (价值)夏季靴子
(key)boots_3 => (价值)春靴
这将允许您独立更改密钥,您可以从memcache执行多重操作以获取所有密钥。