| Author | SHA1 | Message | Date |
|---|---|---|---|
|
|
bd0e173742 | 更新import包 | 2 years ago |
|
|
fa6ee5b87e | 有序集合增加浮点型写入 | 2 years ago |
|
|
fc77d615ab | 增加获取过期时间 | 3 years ago |
|
|
74a4aeef10 | 删除无用方法 | 3 years ago |
|
|
b768284e21 | 增加hash查询多个键值 | 3 years ago |
|
|
8d64d44e08 | 增加rpop | 3 years ago |
|
|
8ed838ada2 | 修改与配置无关 | 3 years ago |
|
|
237b07c53a | 修改redis默认地址 | 3 years ago |
|
|
dc1ba04572 | 增加ZScoreInt64方法 | 3 years ago |
|
|
00352882da | 增加hash keys/vals方法 | 3 years ago |
|
|
4b10313f40 | 修改redis连接 | 3 years ago |
|
|
8dd1731b3f | 增加有序集合处理 | 3 years ago |
|
|
e940890234 | 增加HList方法 | 3 years ago |
|
|
ce70046aea | Merge branch 'master' of ssh://git.tetele.net:4001/tgo/redis | 3 years ago |
|
|
627b8d214d | 增加exists | 3 years ago |
|
|
dc483698df | 更改获取连接地址的方式 | 3 years ago |
|
|
ab79cd1dff | 同步跃恒redis | 3 years ago |
|
|
2db4dd3dec | 同步跃恒redis | 3 years ago |
|
|
1ddbd44a2d | 增加watch操作 | 4 years ago |
| @ -1,3 +0,0 @@ | |||
| # redis | |||
| redis操作 | |||
| @ -1,18 +0,0 @@ | |||
| package redis | |||
| import ( | |||
| "testing" | |||
| ) | |||
| func Test_SetAdd(t *testing.T) { | |||
| reply, err := Set(123, "不知道433ee4") | |||
| t.Log(reply) | |||
| t.Log(err) | |||
| ret, err := Get("123") | |||
| t.Log(ret) | |||
| t.Log(err) | |||
| } | |||
| @ -0,0 +1,14 @@ | |||
| package redis | |||
| import ( | |||
| redisdb "github.com/gomodule/redigo/redis" | |||
| ) | |||
| //exists | |||
| func Exist(key string) (bool, error) { | |||
| c := GetConn() | |||
| defer c.Close() | |||
| return redisdb.Bool(c.Do("EXISTS", key)) | |||
| } | |||
| @ -0,0 +1,15 @@ | |||
| package redis | |||
| import ( | |||
| "testing" | |||
| ) | |||
| func Test_Exists(t *testing.T) { | |||
| RedisInit("127.0.0.1:6379", "123456") | |||
| ret3, err := Exists("60007_product2") | |||
| t.Log(ret3) | |||
| t.Log(err) | |||
| } | |||
| @ -0,0 +1,39 @@ | |||
| package redis | |||
| import ( | |||
| redisdb "github.com/gomodule/redigo/redis" | |||
| ) | |||
| /** | |||
| * 设置有效期 | |||
| */ | |||
| func SetExpire(key string, expire int64) (int64, error) { | |||
| c := GetConn() | |||
| var err error | |||
| var reply interface{} | |||
| reply, err = c.Do("expire", key, expire) | |||
| CloseConn(c) | |||
| if err != nil { | |||
| return 0, err | |||
| } | |||
| return redisdb.Int64(reply, err) | |||
| } | |||
| /** | |||
| * 获取有效期 | |||
| */ | |||
| func GetExpire(key string) (int64, error) { | |||
| c := GetConn() | |||
| var err error | |||
| var reply interface{} | |||
| reply, err = c.Do("TTL", key) | |||
| CloseConn(c) | |||
| if err != nil { | |||
| return 0, err | |||
| } | |||
| return redisdb.Int64(reply, err) | |||
| } | |||
| @ -0,0 +1,24 @@ | |||
| package redis | |||
| import ( | |||
| // "strconv" | |||
| "testing" | |||
| // "tgo/helper" | |||
| ) | |||
| func Test_GetExpire(t *testing.T) { | |||
| RedisPassword = "123456" | |||
| RedisInit("127.0.0.1:6379", RedisPassword) | |||
| Set("test1", "sss") | |||
| ret3, err := SetExpire("test1", 10) | |||
| t.Log(ret3) | |||
| t.Log(err) | |||
| ret4, err := GetExpire("test1") | |||
| t.Log(ret4) | |||
| t.Log(err) | |||
| } | |||
| @ -0,0 +1,8 @@ | |||
| module git.tetele.net/tgo/redis | |||
| go 1.16 | |||
| require ( | |||
| git.tetele.net/tgo/helper v0.3.1 | |||
| github.com/gomodule/redigo v1.8.8 | |||
| ) | |||
| @ -0,0 +1,14 @@ | |||
| git.tetele.net/tgo/helper v0.3.1 h1:5+6xK6nr2BB1A0XVKrrA8R/GW0y3aUuKUIcz3zgAwZo= | |||
| git.tetele.net/tgo/helper v0.3.1/go.mod h1:89mQwyfqZ+t8YXiVwzSxA70gLlUNqoZGDEUxvV46jXk= | |||
| github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= | |||
| github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | |||
| github.com/gomodule/redigo v1.8.8 h1:f6cXq6RRfiyrOJEV7p3JhLDlmawGBVBBP1MggY8Mo4E= | |||
| github.com/gomodule/redigo v1.8.8/go.mod h1:7ArFNvsTjH8GMMzB4uy1snslv2BwmginuMs06a1uzZE= | |||
| github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= | |||
| github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | |||
| github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= | |||
| github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= | |||
| github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= | |||
| gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | |||
| gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= | |||
| gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= | |||
| @ -0,0 +1,77 @@ | |||
| package redis | |||
| import ( | |||
| "log" | |||
| "time" | |||
| redisdb "github.com/gomodule/redigo/redis" | |||
| ) | |||
| // 定义redis链接池 | |||
| var Pool *redisdb.Pool | |||
| // redis服务地址,如需更改,在api服务中设置 | |||
| var RedisServerUrl string = "127.0.0.1:6379" | |||
| // redis密码,如需更改,在api服务中设置 | |||
| var RedisPassword string = "" | |||
| var MaxActive, MaxIdle int = 1, 1 //最大的激活连接数,最大的空闲连接数 | |||
| // func init() { | |||
| // if Pool == nil { | |||
| // RedisInit() | |||
| // } | |||
| // } | |||
| func Conn() { | |||
| RedisInit(RedisServerUrl, RedisPassword, MaxActive, MaxIdle) | |||
| } | |||
| /* | |||
| * 初始化redis链接池 | |||
| * @param serverUrl 服务地址 | |||
| * @param password 密码 | |||
| * @param max 最大的激活连接数,最大的空闲连接数 | |||
| */ | |||
| func RedisInit(serverUrl, password string, max ...int) { | |||
| if len(max) > 0 { | |||
| MaxActive = max[0] | |||
| } | |||
| if len(max) > 1 { | |||
| MaxIdle = max[1] | |||
| } | |||
| if serverUrl != "" { | |||
| RedisServerUrl = serverUrl | |||
| } | |||
| if password != "" { | |||
| RedisPassword = password | |||
| } | |||
| Pool = &redisdb.Pool{ | |||
| MaxIdle: MaxIdle, /*最大的空闲连接数*/ | |||
| MaxActive: MaxActive, /*最大的激活连接数*/ | |||
| Dial: redisConn, | |||
| } | |||
| } | |||
| func redisConn() (redisdb.Conn, error) { | |||
| dbOption := redisdb.DialDatabase(0) | |||
| pwOption := redisdb.DialPassword(RedisPassword) | |||
| // **重要** 设置读写超时 | |||
| readTimeout := redisdb.DialReadTimeout(time.Second * time.Duration(2)) | |||
| writeTimeout := redisdb.DialWriteTimeout(time.Second * time.Duration(5)) | |||
| conTimeout := redisdb.DialConnectTimeout(time.Second * time.Duration(2)) | |||
| c, err := redisdb.Dial("tcp", RedisServerUrl, dbOption, pwOption, readTimeout, writeTimeout, conTimeout) | |||
| if err != nil { | |||
| log.Println("redis connect failed", err) | |||
| return nil, err | |||
| } else { | |||
| log.Println("redis connected", RedisServerUrl) | |||
| } | |||
| return c, nil | |||
| } | |||
| @ -0,0 +1,93 @@ | |||
| package redis | |||
| import ( | |||
| redisdb "github.com/gomodule/redigo/redis" | |||
| ) | |||
| //list 尾部增加值 | |||
| func Rpush(key string, field interface{}) (int64, error) { | |||
| c := GetConn() | |||
| reply, err := c.Do("RPUSH", key, field) | |||
| CloseConn(c) | |||
| if err != nil { | |||
| return 0, err | |||
| } | |||
| return redisdb.Int64(reply, nil) | |||
| } | |||
| //移除列表的最后一个元素,返回值为移除的元素。 | |||
| func Rpop(key string) ([]byte, error) { | |||
| c := GetConn() | |||
| ret, err := c.Do("RPOP", key) | |||
| CloseConn(c) | |||
| if err != nil { | |||
| return nil, err | |||
| } | |||
| reply, err := redisdb.Bytes(ret, err) | |||
| return reply, err | |||
| } | |||
| //list 头部增加值 | |||
| func Lpush(key string, field interface{}) (int64, error) { | |||
| c := GetConn() | |||
| reply, err := c.Do("LPUSH", key, field) | |||
| CloseConn(c) | |||
| if err != nil { | |||
| return 0, err | |||
| } | |||
| return redisdb.Int64(reply, nil) | |||
| } | |||
| //list 长度 | |||
| func Llen(key string) (int64, error) { | |||
| c := GetConn() | |||
| reply, err := c.Do("LLEN", key) | |||
| CloseConn(c) | |||
| if err != nil { | |||
| return 0, err | |||
| } | |||
| return redisdb.Int64(reply, nil) | |||
| } | |||
| //list 通过索引设置列表元素的值 LSET key index value | |||
| func Lset(key string, index int, value interface{}) (interface{}, error) { | |||
| c := GetConn() | |||
| reply, err := c.Do("LSET", key, index, value) | |||
| CloseConn(c) | |||
| return reply, err | |||
| } | |||
| /* | |||
| LRANGE key start stop | |||
| 获取列表指定范围内的元素 | |||
| */ | |||
| func Lrange(key string, start, stop int64) ([][]byte, error) { | |||
| c := GetConn() | |||
| ret, err := c.Do("LRANGE", key, start, stop) | |||
| reply := make([][]byte, 0) | |||
| if err == nil { | |||
| reply, err = redisdb.ByteSlices(ret, err) | |||
| } | |||
| CloseConn(c) | |||
| return reply, err | |||
| } | |||
| @ -0,0 +1,41 @@ | |||
| package redis | |||
| import ( | |||
| redisdb "github.com/gomodule/redigo/redis" | |||
| ) | |||
| /** | |||
| * key增加 | |||
| */ | |||
| func Incrby(key string, value interface{}) (int64, error) { | |||
| c := GetConn() | |||
| var err error | |||
| var reply interface{} | |||
| reply, err = c.Do("INCRBY", key, value) | |||
| CloseConn(c) | |||
| if err != nil { | |||
| return 0, err | |||
| } | |||
| ret, err := redisdb.Int64(reply, err) | |||
| return ret, err | |||
| } | |||
| /** | |||
| * key减 | |||
| */ | |||
| func Decrby(key string, value interface{}) (int64, error) { | |||
| c := GetConn() | |||
| var err error | |||
| var reply interface{} | |||
| reply, err = c.Do("DECRBY", key, value) | |||
| CloseConn(c) | |||
| if err != nil { | |||
| return 0, err | |||
| } | |||
| ret, err := redisdb.Int64(reply, err) | |||
| return ret, err | |||
| } | |||
| @ -0,0 +1,93 @@ | |||
| package redis | |||
| import ( | |||
| redisdb "github.com/gomodule/redigo/redis" | |||
| ) | |||
| /* | |||
| * 存值 | |||
| * key 域 | |||
| * value 值 | |||
| * 2021/08/31 | |||
| */ | |||
| func SAdd(key string, value interface{}) (int64, error) { | |||
| c := GetConn() | |||
| reply, err := c.Do("SADD", key, value) | |||
| CloseConn(c) | |||
| if err != nil { | |||
| return 0, err | |||
| } else { | |||
| return redisdb.Int64(reply, nil) | |||
| } | |||
| } | |||
| /* | |||
| * 删除hash值 | |||
| */ | |||
| func SRem(key, value interface{}) (int64, error) { | |||
| c := GetConn() | |||
| reply, err := c.Do("SREM", key, value) | |||
| CloseConn(c) | |||
| if err != nil { | |||
| return 0, err | |||
| } else { | |||
| return redisdb.Int64(reply, nil) | |||
| } | |||
| } | |||
| /** | |||
| * 集合键是否存在 | |||
| * key 域 | |||
| * field 名 | |||
| */ | |||
| func SIsmember(key, value interface{}) (int64, error) { | |||
| c := GetConn() | |||
| reply, err := c.Do("SISMEMBER", key, value) | |||
| CloseConn(c) | |||
| if err != nil { | |||
| return 0, err | |||
| } else { | |||
| return redisdb.Int64(reply, nil) | |||
| } | |||
| } | |||
| /** | |||
| * 集合成员数量 | |||
| */ | |||
| func SCard(key interface{}) (int64, error) { | |||
| c := GetConn() | |||
| reply, err := c.Do("SCard", key) | |||
| CloseConn(c) | |||
| if err != nil { | |||
| return 0, err | |||
| } else { | |||
| return redisdb.Int64(reply, nil) | |||
| } | |||
| } | |||
| //hash取值,返回[]byte | |||
| func SMembers(key string) ([]byte, error) { | |||
| c := GetConn() | |||
| ret, err := c.Do("SMEMBERS", key) | |||
| reply := make([]byte, 0) | |||
| if err == nil { | |||
| reply, err = redisdb.Bytes(ret, err) | |||
| } | |||
| CloseConn(c) | |||
| return reply, err | |||
| } | |||
| @ -1,21 +1,17 @@ | |||
| package redis | |||
| import ( | |||
| // "strconv" | |||
| "testing" | |||
| // "time" | |||
| // "tgo/helper" | |||
| ) | |||
| func Test_Get(t *testing.T) { | |||
| func Test_Exists(t *testing.T) { | |||
| reply, err := Get("siteListCache") | |||
| RedisInit("127.0.0.1:6379", "123456") | |||
| t.Log(reply) | |||
| ret3, err := Exists("60007_product") | |||
| t.Log(ret3) | |||
| t.Log(err) | |||
| } | |||
| func Test_Set(t *testing.T) { | |||
| c, err := Set("test", 1111, 7200) | |||
| t.Log(c) | |||
| t.Log(err) | |||
| } | |||
| @ -0,0 +1,80 @@ | |||
| package redis | |||
| import ( | |||
| "errors" | |||
| "strconv" | |||
| redisdb "github.com/gomodule/redigo/redis" | |||
| ) | |||
| //监视key递减 | |||
| func WatchSub(key, value string) (bool, error) { | |||
| var err error | |||
| c := GetConn() | |||
| reply, err := c.Do("WATCH", key) | |||
| if err != nil { | |||
| c.Do("UNWATCH") | |||
| return false, err | |||
| } | |||
| reply, err = c.Do("GET", key) | |||
| if err != nil { | |||
| c.Do("UNWATCH") | |||
| return false, err | |||
| } | |||
| stock, err := redisdb.Int64(reply, err) | |||
| if err != nil { | |||
| c.Do("UNWATCH") | |||
| return false, err | |||
| } | |||
| use, err := strconv.ParseInt(value, 10, 64) | |||
| if err != nil { | |||
| c.Do("UNWATCH") | |||
| return false, err | |||
| } | |||
| if stock < use { | |||
| c.Do("UNWATCH") | |||
| return false, errors.New("数量已不足") | |||
| } | |||
| reply, err = c.Do("MULTI") | |||
| if err != nil { | |||
| c.Do("UNWATCH") | |||
| return false, err | |||
| } | |||
| num := stock - use | |||
| reply, err = c.Do("SET", key, num) | |||
| if err != nil { | |||
| c.Do("UNWATCH") | |||
| return false, err | |||
| } | |||
| reply, err = c.Do("EXEC") | |||
| c.Do("UNWATCH") | |||
| CloseConn(c) | |||
| if err != nil { | |||
| return false, err | |||
| } | |||
| if reply != nil { | |||
| return true, err | |||
| } | |||
| return false, err | |||
| } | |||
| @ -0,0 +1,269 @@ | |||
| package redis | |||
| import ( | |||
| "errors" | |||
| redisdb "github.com/gomodule/redigo/redis" | |||
| ) | |||
| /** | |||
| * 集合成员数量 | |||
| */ | |||
| func ZCard(key interface{}) (int64, error) { | |||
| c := GetConn() | |||
| reply, err := c.Do("ZCARD", key) | |||
| CloseConn(c) | |||
| if err != nil { | |||
| return 0, err | |||
| } else { | |||
| return redisdb.Int64(reply, nil) | |||
| } | |||
| } | |||
| /* | |||
| * 存值 | |||
| * key 域 | |||
| * member 成员 | |||
| * score 分值 | |||
| */ | |||
| func ZAdd(key string, score, member interface{}) (int64, error) { | |||
| c := GetConn() | |||
| reply, err := c.Do("ZADD", key, score, member) | |||
| CloseConn(c) | |||
| if err != nil { | |||
| return 0, err | |||
| } else { | |||
| return redisdb.Int64(reply, nil) | |||
| } | |||
| } | |||
| /* | |||
| * 存值 | |||
| * key 域 | |||
| * member 成员 | |||
| * score 分值 | |||
| */ | |||
| func ZAddFloat(key string, score, member interface{}) (float64, error) { | |||
| c := GetConn() | |||
| reply, err := c.Do("ZADD", key, score, member) | |||
| CloseConn(c) | |||
| if err != nil { | |||
| return 0, err | |||
| } else { | |||
| return redisdb.Float64(reply, nil) | |||
| } | |||
| } | |||
| /* | |||
| * 删除hash值 | |||
| */ | |||
| func ZRem(key, member interface{}) (int64, error) { | |||
| c := GetConn() | |||
| reply, err := c.Do("ZREM", key, member) | |||
| CloseConn(c) | |||
| if err != nil { | |||
| return 0, err | |||
| } else { | |||
| return redisdb.Int64(reply, nil) | |||
| } | |||
| } | |||
| /* | |||
| * 区间数量 | |||
| * key 域 | |||
| * min/max 最小/最大值 | |||
| */ | |||
| func ZCount(key string, min, max interface{}) (int64, error) { | |||
| c := GetConn() | |||
| reply, err := c.Do("ZCOUNT", key, min, max) | |||
| CloseConn(c) | |||
| if err != nil { | |||
| return 0, err | |||
| } else { | |||
| return redisdb.Int64(reply, nil) | |||
| } | |||
| } | |||
| /* | |||
| * 自增 | |||
| * key 域 | |||
| * member 成员 | |||
| * inc 分值 | |||
| */ | |||
| func ZIncrBy(key string, inc, member interface{}) (int64, error) { | |||
| c := GetConn() | |||
| reply, err := c.Do("ZINCRBY", key, inc, member) | |||
| CloseConn(c) | |||
| if err != nil { | |||
| return 0, err | |||
| } else { | |||
| return redisdb.Int64(reply, nil) | |||
| } | |||
| } | |||
| /* | |||
| * 自增 | |||
| * key 域 | |||
| * member 成员 | |||
| * inc 分值 | |||
| */ | |||
| func ZIncrByFloat(key string, inc, member interface{}) (float64, error) { | |||
| c := GetConn() | |||
| reply, err := c.Do("ZINCRBY", key, inc, member) | |||
| CloseConn(c) | |||
| if err != nil { | |||
| return 0, err | |||
| } else { | |||
| return redisdb.Float64(reply, nil) | |||
| } | |||
| } | |||
| func ZRange(key string, start, stop int64) ([]map[string]string, error) { | |||
| c := GetConn() | |||
| defer CloseConn(c) | |||
| values, err := redisdb.Values(c.Do("ZRANGE", key, start, stop, "WITHSCORES")) | |||
| if err != nil { | |||
| return nil, err | |||
| } | |||
| if len(values)%2 != 0 { | |||
| return nil, errors.New("redigo: ZRange expects even number of values result") | |||
| } | |||
| var l []map[string]string | |||
| for i := 0; i < len(values); i += 2 { | |||
| key, okKey := values[i].([]byte) | |||
| value, okValue := values[i+1].([]byte) | |||
| if !okKey || !okValue { | |||
| return nil, errors.New("redigo: ZRange key not a bulk string value") | |||
| } | |||
| l = append(l, map[string]string{ | |||
| "member": string(key), | |||
| "score": string(value), | |||
| }) | |||
| } | |||
| return l, nil | |||
| } | |||
| func ZScan(key, field string, len int64) ([]string, error) { | |||
| c := GetConn() | |||
| defer CloseConn(c) | |||
| zscanResult, err := redisdb.Values(c.Do("ZSCAN", key, "0", "MATCH", field, "COUNT", len)) | |||
| if err != nil { | |||
| return nil, err | |||
| } | |||
| var cursor int | |||
| var membersAndScores []string | |||
| var member []string | |||
| redisdb.Scan(zscanResult, &cursor, &membersAndScores) | |||
| for i, v := range membersAndScores { | |||
| if i%2 == 0 { | |||
| member = append(member, v) | |||
| } | |||
| } | |||
| return member, nil | |||
| } | |||
| /* | |||
| * 回有序集合中指定成员的索引(从小到大排名) | |||
| * key 域 | |||
| * member 成员 | |||
| */ | |||
| func ZRank(key string, member interface{}) (int64, error) { | |||
| c := GetConn() | |||
| reply, err := c.Do("ZRANK", key, member) | |||
| CloseConn(c) | |||
| if err != nil { | |||
| return 0, err | |||
| } else { | |||
| return redisdb.Int64(reply, nil) | |||
| } | |||
| } | |||
| /* | |||
| * 有序集合中指定成员的索引(从大到小排名) | |||
| * key 域 | |||
| * member 成员 | |||
| */ | |||
| func ZRevrank(key string, member interface{}) (int64, error) { | |||
| c := GetConn() | |||
| reply, err := c.Do("ZREVRANK", key, member) | |||
| CloseConn(c) | |||
| if err != nil { | |||
| return 0, err | |||
| } else { | |||
| return redisdb.Int64(reply, nil) | |||
| } | |||
| } | |||
| /* | |||
| * 指定成员的分数 | |||
| * key 域 | |||
| * member 成员 | |||
| */ | |||
| func ZScore(key string, member interface{}) (float64, error) { | |||
| c := GetConn() | |||
| reply, err := c.Do("ZSCORE", key, member) | |||
| CloseConn(c) | |||
| if err != nil { | |||
| return 0, err | |||
| } else { | |||
| return redisdb.Float64(reply, nil) | |||
| } | |||
| } | |||
| /* | |||
| * 指定成员的分数, 返回int64 | |||
| * key 域 | |||
| * member 成员 | |||
| */ | |||
| func ZScoreInt64(key string, member interface{}) (int64, error) { | |||
| c := GetConn() | |||
| reply, err := c.Do("ZSCORE", key, member) | |||
| CloseConn(c) | |||
| if err != nil { | |||
| return 0, err | |||
| } else { | |||
| return redisdb.Int64(reply, nil) | |||
| } | |||
| } | |||
| @ -0,0 +1,41 @@ | |||
| package redis | |||
| import ( | |||
| "testing" | |||
| ) | |||
| func Test_Zset(t *testing.T) { | |||
| Conn() | |||
| ret3, err := ZAdd("zset", 9, 9) | |||
| t.Log(ret3) | |||
| t.Log(err) | |||
| ret3, err = ZCard("zset") | |||
| t.Log(ret3) | |||
| t.Log(err) | |||
| // ret3, err = ZRem("zset", 9) | |||
| // t.Log(ret3) | |||
| // t.Log(err) | |||
| ret3, err = ZCount("zset", 0, 100) | |||
| t.Log(ret3) | |||
| t.Log(err) | |||
| ret3, err = ZIncrBy("zset", 10, 9) | |||
| t.Log(ret3) | |||
| t.Log(err) | |||
| ret3, err = ZRank("zset", 9) | |||
| t.Log(ret3) | |||
| t.Log(err) | |||
| ret3, err = ZRevrank("zset", 9) | |||
| t.Log(ret3) | |||
| t.Log(err) | |||
| ret4, err := ZScore("zset", 9) | |||
| t.Log(ret4) | |||
| t.Log(err) | |||
| } | |||