beego redis作为缓存
用redis来作为cach其实官网已经很详细了https://beego.me/docs/module/cache.md,只是我一般喜欢封装成通用方法
直接上代码吧 redis.go作为通用工具类:
import ( "fmt" "time"
"github.com/astaxie/beego" "github.com/astaxie/beego/cache" _ "github.com/astaxie/beego/cache/redis" _ "github.com/gomodule/redigo/redis" )
var redisCache cache.Cache
func init() { redisHost := beego.AppConfig.String("redis::address") dataBase := beego.AppConfig.String("redis::database") password := beego.AppConfig.String("redis::password") redisKey := beego.AppConfig.String("redis::key") config := fmt.Sprintf(`{"key":"%s","conn":"%s","dbNum":"%s","password":"%s"}`, redisKey, redisHost, dataBase, password) var err error redisCache, err = cache.NewCache("redis", config) if err != nil || redisCache == nil { errMsg := "failed to init redis" beego.Error(errMsg, err) panic(errMsg) } }
func SetStr(key, value string, time time.Duration) (err error) { err = redisCache.Put(key, value, time) if err != nil { beego.Error("set key:", key, ",value:", value, err) } return }
func GetStr(key string) (value string) { v := redisCache.Get(key) value = string(v.([]byte)) //这里的转换很重要,Get返回的是interface return }
func DelKey(key string) (err error) { err = redisCache.Delete(key) return }
使用的时候需要修改配置文件app.conf
[redis] address=localhost:6379 database=0 password="" key="demo"我一般习惯用字符串,所以上面redis封装的也是string, 如果是对象就用json 序列化和返序列化,使用示例:
func (c *MainController) Get() { //声明对象 type TokenView struct { Token string LoginTime string LoginIp string } //实例化 t := TokenView{ Token: string(xid.New().String()), LoginTime: string(time.Now().Format("2006-01-02 15:04:05")), LoginIp: strings.TrimSpace(c.Ctx.Input.IP()), } //json序列化 str, err := json.Marshal(t) if err != nil { fmt.Print(err) } ///redis保存 redis.SetStr("test", string(str), time.Minute*time.Duration(10)) //redis获取 v := redis.GetStr("test") fmt.Println(v) //json反序列化 var obj TokenView json.Unmarshal([]byte(v), &obj) fmt.Println(obj.Token)c.TplName = "index.html" }
必要的包还是 要引入的:
import ( "demo/redis" "encoding/json" "fmt" "strings" "time""github.com/astaxie/beego" "github.com/rs/xid" )