golang redis连接池的使用

hfyarvin · · 10437 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

````golang package main import ( "encoding/json" "errors" "fmt" "time" "github.com/garyburd/redigo/redis" ) const ( RedisURL = "redis://*****:6379" redisMaxIdle = 3 //最大空闲连接数 redisIdleTimeoutSec = 240 //最大空闲连接时间 RedisPassword = "*****" ) // NewRedisPool 返回redis连接池 func NewRedisPool(redisURL string) *redis.Pool { return &redis.Pool{ MaxIdle: redisMaxIdle, IdleTimeout: redisIdleTimeoutSec * time.Second, Dial: func() (redis.Conn, error) { c, err := redis.DialURL(redisURL) if err != nil { return nil, fmt.Errorf("redis connection error: %s", err) } //验证redis密码 if _, authErr := c.Do("AUTH", RedisPassword); authErr != nil { return nil, fmt.Errorf("redis auth password error: %s", authErr) } return c, err }, TestOnBorrow: func(c redis.Conn, t time.Time) error { _, err := c.Do("PING") if err != nil { return fmt.Errorf("ping redis error: %s", err) } return nil }, } } func set(k, v string) { c := NewRedisPool(RedisURL).Get() defer c.Close() _, err := c.Do("SET", k, v) if err != nil { fmt.Println("set error", err.Error()) } } func getStringValue(k string) string { c := NewRedisPool(RedisURL).Get() defer c.Close() username, err := redis.String(c.Do("GET", k)) if err != nil { fmt.Println("Get Error: ", err.Error()) return "" } return username } func SetKeyExpire(k string, ex int) { c := NewRedisPool(RedisURL).Get() defer c.Close() _, err := c.Do("EXPIRE", k, ex) if err != nil { fmt.Println("set error", err.Error()) } } func CheckKey(k string) bool { c := NewRedisPool(RedisURL).Get() defer c.Close() exist, err := redis.Bool(c.Do("EXISTS", k)) if err != nil { fmt.Println(err) return false } else { return exist } } func DelKey(k string) error { c := NewRedisPool(RedisURL).Get() defer c.Close() _, err := c.Do("DEL", k) if err != nil { fmt.Println(err) return err } return nil } func SetJson(k string, data interface{}) error { c := NewRedisPool(RedisURL).Get() defer c.Close() value, _ := json.Marshal(data) n, _ := c.Do("SETNX", k, value) if n != int64(1) { return errors.New("set failed") } return nil } func getJsonByte(k string) ([]byte, error) { jsonGet, err := redis.Bytes(c.Do("GET", key)) if err != nil { fmt.Println(err) return nil, err } return jsonGet, nil } ````

有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

10437 次点击  ∙  1 赞  
加入收藏 微博
被以下专栏收入,发现更多相似内容
2 回复  |  直到 2018-12-14 16:09:03
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传