我有一个类似map[key]value
的结构,我想通过一个字符串键"github.com/golang/groupcache/lru"
将它存储在cacheKey
中。
这是我的问题:
我发现每当我想要更新缓存的项目时,都需要先对其进行Get
编码:
item := cache.Get(cacheKey)
if v, ok := item[key]; ok{
item[key]=new_value
cache.Add(cacheKey, item)
}
这是正确的方法吗?
或者,正如某些人建议的那样,我需要重新设计我的结构,以确保每当我要更新它时就可以执行
cache.Add(cacheKey, item)
。或者,我什至应该使用
cacheKey_key
之类的组合键来存储该项目? 最佳答案
上面的代码将起作用。我查看了您引用的LRU缓存的来源。这是我的笔记:
*map
而不是普通的map
,这将消除调用add的需要。 if v, ok...
)话虽如此,这变成了:
m sync.Mutex
m.Lock()
defer m.Unlock()
cache.Get(cacheKey)[key] = new_value
如果您要详细说明计划存储的数据类型,我们可能会尝试提出一种替代解决方案。