日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
創(chuàng)新互聯(lián)Revel教程:Revel緩存Cache

Revel 提供了一個(gè)服務(wù)器端、臨時(shí)的、低延遲存儲(chǔ)的緩存庫(kù)。對(duì)于頻繁訪問(wèn)數(shù)據(jù)庫(kù)中緩慢變化的數(shù)據(jù),使用緩存一個(gè)很好的方法,并且它也可以用于實(shí)現(xiàn)用戶session (如果基于cookie的session不足).

馬龍網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)公司,馬龍網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為馬龍上千余家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)公司要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的馬龍做網(wǎng)站的公司定做!

參考 緩存接口

過(guò)期時(shí)間

緩存有三種過(guò)期時(shí)間:

  • ?time.Duration?,指定一個(gè)過(guò)期時(shí)間。
  • cache.DEFAULT, 默認(rèn)過(guò)期時(shí)間(1小時(shí))。
  • cache.FOREVER, 永不過(guò)期。

重要提示:調(diào)用者不能依賴于存在于緩存中內(nèi)容,因?yàn)閿?shù)據(jù)是不持久保存,重新啟動(dòng)后,會(huì)清除所有緩存數(shù)據(jù)。

序列化

緩存讀寫(xiě)接口自動(dòng)為調(diào)用者序列化任何類型的的值。有以下幾種方式:

  • 如果是 []byte類型, 數(shù)據(jù)保持不變。
  • 如果是 整數(shù)類型, 數(shù)據(jù)被保存為 ASCII。
  • 其他類型,使用 encoding/gob進(jìn)行編碼。

實(shí)現(xiàn)

緩存通過(guò)以下幾種方式進(jìn)行配置:

  • 分布式memcached 主機(jī)緩存
  • 單獨(dú) redis 主機(jī)緩存
  • 本地內(nèi)存緩存

配置

app.conf中配置緩存:

  • cache.expires - 一個(gè)字符串,time.ParseDuration 類型,指定一個(gè)過(guò)期時(shí)間 (默認(rèn)1小時(shí))
  • cache.memcached -一個(gè)布爾值,是否開(kāi)啟memcached緩存 (默認(rèn)不開(kāi)啟)
  • cache.redis -一個(gè)布爾值,是否開(kāi)啟redis緩存 (默認(rèn)不開(kāi)啟)
  • cache.hosts - 緩存的主機(jī)列表(多個(gè)主機(jī)使用逗號(hào)分隔),cache.memcached開(kāi)啟后有效。

例如

下面是常見(jiàn)操作的一個(gè)例子。請(qǐng)注意,如果不需要調(diào)用的結(jié)果來(lái)處理請(qǐng)求,調(diào)用者可以在新的goroutine調(diào)用緩存操作。

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

緩存有一個(gè)全球性的key空間 - 使用它作為一個(gè)session存儲(chǔ),調(diào)用方應(yīng)采用session UUID的優(yōu)點(diǎn),如下圖所示:

cache.Set(c.Session.Id(), products)

// 然后在隨后的請(qǐng)求中使用它
err := cache.Get(c.Session.Id(), &products)

當(dāng)前文章:創(chuàng)新互聯(lián)Revel教程:Revel緩存Cache
路徑分享:http://m.5511xx.com/article/cdcjpep.html