| package redis | |
| 
 | |
| import ( | |
| 	"errors" | |
| 	"git.tetele.net/tgo/helper" | |
| 	redisdb "github.com/gomodule/redigo/redis" | |
| ) | |
| 
 | |
| //取值 | |
| func GetString(key string) (string, error) { | |
| 	c := GetConn() | |
| 	str, err := redisdb.String(c.Do("get", key)) | |
| 	CloseConn(c) | |
| 	return str, err | |
| } | |
| 
 | |
| /* | |
|  * 存值, | |
|  * args,范围(key, value)或(key, value,expire) | |
|  * 2020/06/06 | |
|  */ | |
| func Set(args ...interface{}) (string, error) { | |
| 	c := GetConn() | |
| 	if len(args) < 2 { | |
| 		return "", errors.New("参数错误,至少需两个参数") | |
| 	} | |
| 	var err error | |
| 	var reply interface{} | |
| 	if len(args) > 2 && helper.ToInt(args[2]) > 0 { | |
| 		reply, err = c.Do("SET", args[0], args[1], "EX", args[2]) //设置过期时间 | |
| 	} else { | |
| 		reply, err = c.Do("SET", args[0], args[1]) | |
| 	} | |
| 
 | |
| 	CloseConn(c) | |
| 
 | |
| 	if err != nil { | |
| 		return "", err | |
| 	} | |
| 	ret, err := redisdb.String(reply, err) | |
| 	return ret, err | |
| } | |
| 
 | |
| /** | |
|  * 删除key | |
|  */ | |
| func Del(key string) (int64, error) { | |
| 	c := GetConn() | |
| 	var err error | |
| 	var reply interface{} | |
| 	reply, err = c.Do("DEL", key) | |
| 
 | |
| 	CloseConn(c) | |
| 
 | |
| 	if err != nil { | |
| 		return 0, err | |
| 	} | |
| 	ret, err := redisdb.Int64(reply, err) | |
| 	return ret, err | |
| } | |
| 
 | |
| /** | |
|  * 设锁 | |
|  * 2020/01/15 | |
|  */ | |
| func SetNx(args ...interface{}) (int64, error) { | |
| 	c := GetConn() | |
| 	if len(args) < 2 { | |
| 		return 0, errors.New("参数错误,至少需两个参数") | |
| 	} | |
| 	var err error | |
| 	var result interface{} | |
| 	if len(args) > 2 && helper.ToInt(args[2]) > 0 { | |
| 		result, err = c.Do("SET", args[0],args[1],"EX",args[2],"NX") //设置过期时间 | |
| 	} else { | |
| 		result, err = c.Do("SETNX", args[0], args[1]) | |
| 	} | |
| 
 | |
| 	if err != nil { | |
| 		return 0, err | |
| 	} | |
| 
 | |
| 	CloseConn(c) | |
| 
 | |
| 	if helper.ToStr(result) == "OK"{ | |
| 		return 1, nil | |
| 	} | |
| 
 | |
| 	return 0,nil | |
| } | |
| 
 | |
| /** | |
|  * key是否存在 | |
|  */ | |
| func Exists(key string) (int64, error) { | |
| 	c := GetConn() | |
| 	var err error | |
| 	var reply interface{} | |
| 	reply, err = c.Do("Exists", key) | |
| 
 | |
| 	CloseConn(c) | |
| 
 | |
| 	if err != nil { | |
| 		return 0, err | |
| 	} | |
| 	ret, err := redisdb.Int64(reply, err) | |
| 	return ret, err | |
| }
 |