gpt4 book ai didi

performance - 戈朗 : right way to store map structure in lru cache

转载 作者:数据小太阳 更新时间:2023-10-29 03:26:25 27 4
gpt4 key购买 nike

我有一个像这样的结构:map[key]value,我想通过一个字符串将它存储在"github.com/golang/groupcache/lru"中键,例如 cacheKey

这是我的问题:

我发现每当我想更新缓存项时,我都需要先获取:

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缓存的来源。这是我的笔记:

  • 无论您做什么决定,如果您计划在 goroutine 中使用它,请确保对该 LRU 的访问是线程安全的。
  • 您可以存储 *map 而不是普通的 map,这样就无需调用 add。
  • 如果可以使用覆盖添加到 map ,则跳过存在检查(if v, ok...)

话虽如此,它变成了这样:

m sync.Mutex
m.Lock()
defer m.Unlock()
cache.Get(cacheKey)[key] = new_value

如果您详细说明了您计划存储的数据类型,我们可能会尝试提出替代解决方案。

关于performance - 戈朗 : right way to store map structure in lru cache,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40302270/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com