内存缓存:更新密钥的策略?

memcache: strategy for updating keys?

更新内存缓存中经常存在的密钥的更好方法是什么 设置()或替换()?

观察:

我观察到设置与替换对驱逐的影响。任何人都可以确认这两个操作与内存管理点有什么区别吗?

正如观察中提到的,当我们使用 set() 操作更新已知密钥时,我们会被逐出。我们更新密钥的频率确实不可预测且非常高。您可以将我们的案例与竞争资源的某种锁定实现联系起来。

在 运行 对一些更新非常频繁的键进行实验之后。我们观察到 replace() 不会导致任何驱逐,但 set() 会导致驱逐。

在浏览了内存缓存文档后 here and here,得出的结论是

  1. set() 操作总是调用内存分配,无论如何。这导致在分配此键的平板上被逐出。
  2. replace() 操作没有进行任何内存分配。

因此,对于 'update a frequently existing key' 的问题,替换至少对于我们的用例来说是更好的选择。它帮助我们避免驱逐