GroupCache是否支持像memcached delete那样的显式缓存逐出?为什么?



GroupCache(https://github.com/golang/groupcache)是一个缓存和缓存填充库,在许多情况下用作memcached的替代品。是否有人对源代码进行了一些研究,并对其原理或实现有很好的了解?GroupCache是否支持像memcached delete那样的显式缓存逐出?为什么?

来自README:

不支持版本化的值。如果键"foo"是值"bar",则键"foo"必须始终是"bar"。既没有缓存过期时间,也没有显式缓存驱逐。因此,也没有CAS,也没有增量/减量。

Groupcache是为性能而设计的,具有超级热点项目的概念,这些项目在整个对等组中进行镜像。

如果支持显式缓存驱逐,则必须从所有实例中删除超级热点项目,这是不可行的,因为它必须锁定系统中每个对等点的主缓存线,因此会对整个系统产生非常糟糕的性能影响。

关于Groupcache背后的设计决策的细节,你可以在golang nuts上发帖,直接询问Brad Fitzpatrick(作者)。

最新更新