
前言
Redis 是一个开源的、使用C语言编写的、基于内存也可持久化的 Key-Value 数据库。
Redis 优势
其他 key-value 存储有什么不同?
Redis有着更为复杂的数据结构并且提供对他们的原子性 *** 作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。
引入包
"github.com/mediocregopher/radix.v2/pool""github.com/mediocregopher/radix.v2/redis"
序列化反序列化
import ( "bytes" "github.com/ugorji/go/codec")
func MsgPackMarshal(v interface{}) ([]byte,error) { var buf = new(bytes.Buffer) enc := codec.NewEncoder(buf,new(codec.MsgpackHandle)) err := enc.Encode(v) return buf.Bytes(),err}
func MsgPackUnMarshal(data []byte,v interface{}) error { var buf = bytes.NewBuffer(data) dec := codec.NewDecoder(buf,new(codec.MsgpackHandle)) return dec.Decode(v)}
建立连接池
var redisConnectionPool *pool.Pooldf := func(network,addr string) (*redis.ClIEnt,error) { clIEnt,err := redis.Dial(network,addr) if err != nil { return nil,err } if config.RedisPassword != "" { if err = clIEnt.Cmd("AUTH",config.RedisPassword).Err; err != nil { clIEnt.Close() return nil,err } } return clIEnt,nil}redisConnectionPool,err = pool.NewCustom("tcp",config.RedisAddress,config.RedisConnectionNumber,df) if err != nil { panic("Failed to connect to Redis server: " + err.Error()) }}
关闭连接池
func Close() { redisConnectionPool.Empty()}
使用客户端
func GetClIEnt() (*redis.ClIEnt,error) { return redisConnectionPool.Get()}func PutClIEnt(c *redis.ClIEnt) { redisConnectionPool.Put(c)}
添加 key
func Set(@R_403_5991@ RedisDatabase,key string,value interface{}) (err error) { c,err := GetClIEnt() if err != nil { return err } defer PutClIEnt(c) encodedValue,err := MsgPackMarshal(value) if err != nil { return err } // Use @R_403_5991@.String() + key as Redis key return c.Cmd("set",@R_403_5991@.String()+key,string(encodedValue)).Err}
查询 key
func Get(@R_403_5991@ RedisDatabase,unmarshal func([]byte) (interface{},error)) (value interface{},err error) { c,err := GetClIEnt() if err != nil { return } defer PutClIEnt(c) // Use @R_403_5991@.String() + key as Redis key encodedValue,err := c.Cmd("get",@R_403_5991@.String()+key).Bytes() if err != nil { return } return unmarshal(encodedValue)}
删除 key
func Remove(@R_403_5991@ RedisDatabase,key string) (err error) { c,err := GetClIEnt() if err != nil { return err } defer PutClIEnt(c) // Use @R_403_5991@.String() + key as Redis key return c.Cmd("del",@R_403_5991@.String()+key).Err}总结
以上是内存溢出为你收集整理的【golang】golang redis 的使用全部内容,希望文章能够帮你解决【golang】golang redis 的使用所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)