<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                [TOC] > [github](https://github.com/bluele/gcache) ## 概述 ### LRC 緩存資源通常比較昂貴,通常數據量較大時,會竟可能從較少的緩存滿足盡可能多訪問. 這里有一種假設,通常最近被訪問的數據,那么它就有可能會被后續繼續訪問,基于這種假設,將所有的數據按訪問時間進行排序,并按驅逐出舊數據,那么存在緩存的數據就為熱點數據. 這樣既節省了內存資源,又極大的滿足了訪問.LRU(Least recently used)算法就是基于這種假設的一直緩存置換算法. ### LFU LFU是最近**最不常用頁面**置換算法(Least Frequently Used),也就是淘汰一定時期內被訪問次數最少的頁! ### 自適應緩存替換算法(ARC) 在IBM Almaden研究中心開發,這個緩存算法同時跟蹤記錄LFU和LRU,以及驅逐緩存條目,來獲得可用緩存的最佳使用 ## 安裝 `go get github.com/bluele/gcache` ## 實例 ### LRU ``` package main import ( "github.com/bluele/gcache" "fmt" ) func main() { gc := gcache.New(20). LRU(). Build() gc.Set("key", "ok") value, err := gc.Get("key") if err != nil { panic(err) } fmt.Println("Get:", value) } ``` ### LRU 帶緩存時間 ``` gc := gcache.New(20). LRU(). Build() gc.SetWithExpire("key", "ok", time.Second*10) ``` ### LFU ``` func main() { // size: 10 gc := gcache.New(10). LFU(). Build() gc.Set("key", "value") } ``` ### 自適應替換緩存(ARC) 不斷地在LRU和LFU之間保持平衡,以改善組合結果。 ``` func main() { // size: 10 gc := gcache.New(10). ARC(). Build() gc.Set("key", "value") } ``` ### 鍵值映射順序移除 ``` func main() { // size: 10 gc := gcache.New(10).Build() gc.Set("key", "value") v, err := gc.Get("key") if err != nil { panic(err) } } ``` ### 在移除,添加時可加入監聽函數 ``` gc := gcache.New(2). EvictedFunc(func(key, value interface{}) { fmt.Println("evicted key:", key) }). AddedFunc(func(key, value interface{}) { fmt.Println("added key:", key) }). Build() ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看