GroupCache ( https://github.com/golang/groupcache ) 是一个缓存和缓存填充库,在许多情况下旨在替代 memcached。是否有人对源代码进行了一些研究并且对其原理或实现有很好的了解? GroupCache 是否支持像 memcached delete 这样的显式缓存逐出?为什么?
请您参考如下方法:
来自自述文件
:
does not support versioned values. If key "foo" is value "bar", key "foo" must always be "bar". There are neither cache expiration times, nor explicit cache evictions. Thus there is also no CAS, nor Increment/Decrement.
Groupcache 是为性能而设计的,具有 super 热门项目的概念,它们在整个对等组中得到镜像。
如果支持显式缓存逐出, super 热门项目将不得不从所有实例中删除,这是不切实际的,因为它会对整个系统产生非常糟糕的性能影响,因为它必须锁定系统中每个对等点的主缓存行。
有关 Groupcache 背后的设计决策的细节,您可以在 golang-nuts 中发帖并直接询问 Brad Fitzpatrick(作者)。