GroupCache(https://github.com/golang/groupcache)是一个缓存和缓存填充库,在许多情况下用作memcached的替代品。有人对源代码做过一些研究,并且对其原理或实现有很好的理解吗? GroupCache是否支持像memcached delete这样的显式缓存驱逐?为什么?
答案 0 :(得分:2)
来自README
:
不支持版本化值。如果键“foo”是值“bar”,则键“foo”必须始终为“bar”。缓存过期时间,或显式缓存驱逐都没有。因此,也没有CAS,也没有增量/减量。
Groupcache是为了提高性能而设计的,具有超级热门项目的概念,它们在整个对等组中进行镜像。
如果支持显式缓存逐出,则必须从所有实例中删除超级热门项,这是不切实际的,因为它会对整个系统产生非常糟糕的性能影响,因为它必须锁定系统中每个对等体的主缓存行。
有关Groupcache背后的设计决策的具体信息,您可以在golang-nuts发布并直接询问Brad Fitzpatrick(作者)。