Memcached只更新值数组的单个元素

时间:2017-11-17 09:20:05

标签: memcached

当我使用Memcached时,是否可以仅更新值数组中的一个元素?假设我设置了一个键boots,该键的值为:

(key)boots =>
(value)[
   [
      'id' => 1,
      'type' => 'winter boots'
   ],
   [
      'id' => 2,
      'type' => 'summer boots'
   ],
   [
      'id' => 3,
      'type' => 'spring boots'
   ]   
]

如果我更新(假设'夏季靴子'成为所有季节靴子')我应如何仅针对来自MySQL的更新产品检索新数据数据库表并仅刷新该特定产品,而不是重新获取所有产品数据并更新整个值(我的意思是这是memcached正常工作的方式吗?)?我应该使用某种排序算法,如merge sortquicksort,还是我必须使用另一种缓存系统?我希望我解释一下我正在寻找什么。提前谢谢!

1 个答案:

答案 0 :(得分:0)

我认为可行的唯一方法是获取存储在memcache中的整个对象,然后更改它并将其存储回来。

还有第二种方式: 查看更新存储在memcache中的元素的频率以及存储元素的大小。

如果它是非常大的数组,那么将整个对象存储在memcache中是没有意义的。 那么最好将每个条目存储为不同的键,看起来像这样:

(key)boots_1 => (价值)冬靴

(key)boots_2 => (价值)夏季靴子

(key)boots_3 => (价值)春靴

这将允许您独立更改密钥,您可以从memcache执行多重操作以获取所有密钥。