正如观察中所提到的,当我们使用set()操作更新已知密钥时,我们正在逐渐被驱逐。我们更新密钥的频率实际上是不可预测的并且非常高。您可以将我们的案例与竞争资源的某种锁实现联系起来。
使用某些键进行实验后,这些键经常被更新。我们观察到replace()没有引起任何驱逐,但是set()确实会导致驱逐。
通过memcache文档here和here后,得出结论
- set()操作总是调用内存分配,无论如何。这导致分配此密钥的slab上的驱逐。
- replace()操作没有进行任何内存分配。
醇>
因此,对于更新频繁存在的密钥的问题'替换是更好的选择,至少对于我们的用例。它帮助我们避免驱逐。