我的结构类似于: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
这样的组合键来存储该项目?
答案 0 :(得分:0)
上面的代码可行。我查看了您引用的LRU缓存的来源。以下是我的笔记:
*map
而不是普通map
,这样就无需调用add。if v, ok...
)所以说,这就是它:
m sync.Mutex
m.Lock()
defer m.Unlock()
cache.Get(cacheKey)[key] = new_value
如果您详细说明您计划存储的数据类型,我们可能会尝试提供替代解决方案。