go怎么实现本地缓存
在Go语言中,可以使用`sync.Map`或者`map`来实现本地缓存。
1. 使用`sync.Map`实现本地缓存:
packagemain import( "sync" "time" ) typeCachestruct{ datasync.Map } func(c*Cache)Get(keystring)(interface{},bool){ value,ok:=c.data.Load(key) ifok{ returnvalue,true } returnnil,false } func(c*Cache)Set(keystring,valueinterface{}){ c.data.Store(key,value) } func(c*Cache)Delete(keystring){ c.data.Delete(key) } funcmain(){ cache:=&Cache{} cache.Set("key1","value1") cache.Set("key2","value2") value,ok:=cache.Get("key1") ifok{ println(value.(string))//输出:value1 } cache.Delete("key2") value,ok=cache.Get("key2") if!ok{ println("key2notfound")//输出:key2notfound } }
2. 使用`map`实现本地缓存:
packagemain import"time" typeCachestruct{ datamap[string]interface{} expirymap[string]time.Time } func(c*Cache)Get(keystring)(interface{},bool){ value,ok:=c.data[key] ifok{ expiryTime:=c.expiry[key] ifexpiryTime.After(time.Now()){ returnvalue,true }else{ delete(c.data,key) delete(c.expiry,key) returnnil,false } } returnnil,false } func(c*Cache)Set(keystring,valueinterface{},expirytime.Duration){ c.data[key]=value c.expiry[key]=time.Now().Add(expiry) } func(c*Cache)Delete(keystring){ delete(c.data,key) delete(c.expiry,key) } funcmain(){ cache:=&Cache{ data:make(map[string]interface{}), expiry:make(map[string]time.Time), } cache.Set("key1","value1",time.Second*10) cache.Set("key2","value2",time.Second*20) value,ok:=cache.Get("key1") ifok{ println(value.(string))//输出:value1 } time.Sleep(time.Second*15) value,ok=cache.Get("key1") if!ok{ println("key1notfound")//输出:key1notfound } }
以上是两种常见的在Go语言中实现本地缓存的方法,选择使用哪种取决于你对并发安全性和性能的需求。
版权声明
本文仅代表作者观点,不代表米安网络立场。
上一篇:c语言中幂指数如何表示 下一篇:租用cn2新加坡vps怎么测评
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。