一個內建於專案的分散式快取服務

wuyan94zl發表於2021-09-16

專案中快取是必不可少的,提到快取大機率會說 redis
不管使用什麼第三方快取,總會需要安裝對應的服務。
怎麼實現高效快取又不需要依賴於第三方服務呢?
於是寫了一個內建與golang專案的分散式快取,不需要依賴其他任何服務,使用簡單,結構簡單。

github.com/wuyan94zl/go-cache

import "github.com/wuyan94zl/go-cache"
func main(){
    cache.Default(nil) // 例項化快取服務
    http.HandleFunc("/api/cache", func(w http.ResponseWriter, r *http.Request) {
        // cache.Instance為快取例項,拿到例項就可以隨意的使用快取服務了
        // cache.Instance例項目前僅有5個函式
        // 設定快取 鍵:wuyan 值:value 有效期:60秒
        cache.Instance.Set("wuyan","value",60)
        // 獲取快取
        cache.Instance.Get("wuyan")
        // SET if Not eXists 即當 鍵:wuyan 存在時返回false,不存在則新增,返回true
        cache.Instance.SetNX("wuyan","value",60)

        var callback cache.CallBack = cache.CallBackFunc(func(key string, params map[string]interface{}) ([]byte, error) {
            return json.Marshal("cache data")
        })
        // 設定回撥函式來實現快取的寫入和讀取
        cache.Instance.CallBackFunc(callback).Cache("cache",map[string]interface{}{}, 600)
        res.Write([]byte("response data"))
    })
    http.ListenAndServe(":8888", nil)
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結
沒有造飛機的格局,怎麼能擰得好螺絲。

相關文章