in groupcache.go [736:752]
func (c *cache) add(key string, payload payload) {
c.mu.Lock()
defer c.mu.Unlock()
c.updateMetadata(key, payload.ttl, int64(payload.value.Len()))
if c.lru == nil {
c.lru = &lru.Cache{
OnEvicted: func(key lru.Key, value interface{}) {
val := value.(ByteView)
delete(c.metadata, key.(string))
c.nbytes -= int64(len(key.(string))) + int64(val.Len())
c.nevict++
},
}
}
c.lru.Add(key, payload.value)
c.nbytes += int64(len(key)) + int64(payload.value.Len())
}