<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                Revel 提供了一個服務器端、臨時的、低延遲存儲的緩存庫。對于頻繁訪問數據庫中緩慢變化的數據,使用緩存一個很好的方法,并且它也可以用于實現用戶session (如果基于cookie的session不足). 參考?[緩存接口](http://godoc.org/github.com/revel/revel/cache#Cache) ## 過期時間 緩存有三種過期時間: * time.Duration,指定一個過期時間。 * `cache.DEFAULT`, 默認過期時間(1小時)。 * `cache.FOREVER`, 永不過期。 重要提示:調用者不能依賴于存在于緩存中內容,因為數據是不持久保存,重新啟動后,會清除所有緩存數據。 ## 序列化 緩存讀寫接口自動為調用者序列化任何類型的的值。有以下幾種方式: * 如果是?`[]byte`類型, 數據保持不變。 * 如果是 整數類型, 數據被保存為 ASCII。 * 其他類型,使用?[`encoding/gob`](http://golang.org/pkg/encoding/gob/)進行編碼。 ## 實現 緩存通過以下幾種方式進行配置: * 分布式[memcached](http://memcached.org/)?主機緩存 * 單獨?[redis](http://redis.io/)?主機緩存 * 本地內存緩存 ## 配置 在`app.conf`中配置緩存: * `cache.expires`?- 一個字符串,[`time.ParseDuration`](http://golang.org/pkg/time/#ParseDuration)?類型,指定一個過期時間 (默認1小時) * `cache.memcached`?-一個布爾值,是否開啟memcached緩存 (默認不開啟) * `cache.redis`?-一個布爾值,是否開啟redis緩存 (默認不開啟) * `cache.hosts`?- 緩存的主機列表(多個主機使用逗號分隔),`cache.memcached`開啟后有效。 ## 例如 下面是常見操作的一個例子。請注意,如果不需要調用的結果來處理請求,調用者可以在新的goroutine調用緩存操作。 ~~~ import ( "github.com/revel/revel" "github.com/revel/revel/cache" ) func (c App) ShowProduct(id string) revel.Result { var product Product if err := cache.Get("product_"+id, &product); err != nil { product = loadProduct(id) go cache.Set("product_"+id, product, 30*time.Minute) } return c.Render(product) } func (c App) AddProduct(name string, price int) revel.Result { product := NewProduct(name, price) product.Save() return c.Redirect("/products/%d", product.id) } func (c App) EditProduct(id, name string, price int) revel.Result { product := loadProduct(id) product.name = name product.price = price go cache.Set("product_"+id, product, 30*time.Minute) return c.Redirect("/products/%d", id) } func (c App) DeleteProduct(id string) revel.Result { product := loadProduct(id) product.Delete() go cache.Delete("product_"+id) return c.Redirect("/products") } ~~~ ## Session 用法 緩存有一個全球性的key空間 - 使用它作為一個session存儲,調用方應采用session UUID的優點,如下圖所示: ~~~ cache.Set(c.Session.Id(), products) // 然后在隨后的請求中使用它 err := cache.Get(c.Session.Id(), &products) ~~~
                  <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>

                              哎呀哎呀视频在线观看