内存缓存:更新密钥的策略?
memcache: strategy for updating keys?
更新内存缓存中经常存在的密钥的更好方法是什么
设置()或替换()?
观察:
我观察到设置与替换对驱逐的影响。任何人都可以确认这两个操作与内存管理点有什么区别吗?
正如观察中提到的,当我们使用 set() 操作更新已知密钥时,我们会被逐出。我们更新密钥的频率确实不可预测且非常高。您可以将我们的案例与竞争资源的某种锁定实现联系起来。
在 运行 对一些更新非常频繁的键进行实验之后。我们观察到 replace() 不会导致任何驱逐,但 set() 会导致驱逐。
在浏览了内存缓存文档后 here and here,得出的结论是
- set() 操作总是调用内存分配,无论如何。这导致在分配此键的平板上被逐出。
- replace() 操作没有进行任何内存分配。
因此,对于 'update a frequently existing key' 的问题,替换至少对于我们的用例来说是更好的选择。它帮助我们避免驱逐。
更新内存缓存中经常存在的密钥的更好方法是什么 设置()或替换()?
观察:
我观察到设置与替换对驱逐的影响。任何人都可以确认这两个操作与内存管理点有什么区别吗?
正如观察中提到的,当我们使用 set() 操作更新已知密钥时,我们会被逐出。我们更新密钥的频率确实不可预测且非常高。您可以将我们的案例与竞争资源的某种锁定实现联系起来。
在 运行 对一些更新非常频繁的键进行实验之后。我们观察到 replace() 不会导致任何驱逐,但 set() 会导致驱逐。
在浏览了内存缓存文档后 here and here,得出的结论是
- set() 操作总是调用内存分配,无论如何。这导致在分配此键的平板上被逐出。
- replace() 操作没有进行任何内存分配。
因此,对于 'update a frequently existing key' 的问题,替换至少对于我们的用例来说是更好的选择。它帮助我们避免驱逐。