Redigo基本操作mget-mset
基本操作
package controllers
//GoRedis结构体
//作为控制器
type GoRedis struct{
beego.Controller
}
func(this *GoRedis) ShowGet(){
//链接数据库
conn,err := redis.Dial("tcp",":6379")
defer conn.Close()
if err!=nil {
beego.Error("redis数据库链接失败",err)
return
}
//操作数据库
resp,err := conn.Do("set", "key01", "value01")
re.err := redis.String(resp,err)
beego.Info("回复值=",re)
//关闭数据库
}
再来看看get
func (this *GoRedis) ShowGet(){
conn,err := redis.Dial("tcp",":6379")
defer conn.Close()
if err!=nil {
beego.Error("redis数据库链接失败",err)
return
}
resp,err := conn.Do("mget","key01","key02")
re,err := redis.Values(resp,err)
var str01,str02 string
redis.Scan(re,&str01,&str02)
beego.Info("res==",str01,str02)
}
然后我们来看一个mset和mget
也就是多个值的操作
type GoRedis struct {
beego.Controller
}
func (this *GoRedis) SetValue() {
conn, err := redis.Dial("tcp", ":6379")
defer conn.Close()
if err != nil {
beego.Error("redis数据库链接失败", err)
return
}
resp, err := conn.Do("mset", "key01", "value01", "key02", "value02")
re, err := redis.String(resp, err)
this.Ctx.WriteString("回复值===" + re)
}
func (this *GoRedis) GetValue() {
conn, err := redis.Dial("tcp", ":6379")
defer conn.Close()
if err != nil {
beego.Error("redis数据库链接失败", err)
return
}
resp, err := conn.Do("mget", "key01", "key02")
values, err := redis.Values(resp, err)
var str01, str02 string
redis.Scan(values, &str01, &str02)
this.Ctx.WriteString("回复值===" + str01 + "===" + str02)
}
如果遇到编码问题
那么就exit
然后redis-cli --raw
然后就可以看到中文了
var articleTypes []models.ArticleType
//获取所有类型
o.QueryTable("ArticleType").All(&articleTypes)
//连接数据库
conn,err := redis.Dial("tcp",":6379")
if err!=nil{
beego.Error("redis数据库链接失败")
}
//序列化和反序列化
//来一个容器
var buffer bytes.Buffer
//要有一个编码器
enc := gob.NewEncoder(&buffer)
//编码
enc.Encode(&articleTypes)
conn.Do("set","articleTypes",buffer.Bytes())
resp,err := conn.Do("get","articleTypes")
redis.Bytes(resp.err)
dec := gob.NewDecoder(bytes.NewReader(types))
var testTypes []models.ArticleType
dec.Decode(&testTypes)
beego.Info(testTypes)