本地缓存实现
var cache = struct { // 声明 struct 字面量 cahce (匿名结构体)
sync.Mutex // 互斥锁, 内嵌 Struct
caches map[string]string // kv 内存存储
}{
caches: make(map[string]string), // 初始化 kv 存储
}
// GetCache safe get memory cache
func GetCache(key string) string {
cache.Lock() // 锁住
v := cache.caches[key] // 获取缓存值
defer cache.Unlock() // 释放锁
return v
}
// PutCache safe put memory cache
func PutCache(key string, val string) {
cache.Lock() // 锁住
cache.caches[key] = val // 设置缓存值
defer cache.Unlock() // 释放锁
}
func main() {
for i := 0; i < 10; i++ {
PutCache(fmt.Sprintf("key%d", i), fmt.Sprintf("value%d", i))
}
var v = GetCache("key1")
fmt.Println(v) // value1
}
sync.Mutex 说明
核心实现: CompareAndSwap