فهرست منبع

feat:新增有序结合

wangchuanjin 3 سال پیش
والد
کامیت
d6b35c7929
2فایلهای تغییر یافته به همراه77 افزوده شده و 1 حذف شده
  1. 55 1
      redis/redis.go
  2. 22 0
      redis/redis_test.go

+ 55 - 1
redis/redis.go

@@ -3,11 +3,12 @@ package redis
 import (
 	"encoding/json"
 	"errors"
-	redigo "github.com/garyburd/redigo/redis"
 	"log"
 	"runtime"
 	"strings"
 	"time"
+
+	redigo "github.com/garyburd/redigo/redis"
 )
 
 var RedisPool map[string]*redigo.Pool
@@ -504,6 +505,59 @@ func LLEN(code, list string) int64 {
 	}
 }
 
+func Zadd(code, key string, score float64, value string) int64 {
+	defer catch()
+	conn := RedisPool[code].Get()
+	defer conn.Close()
+	ret, err := conn.Do("ZADD", key, score, value)
+	if nil != err {
+		log.Println("redisutil-Zadd error", err)
+		return -1
+	}
+	if res, ok := ret.(int64); ok {
+		return res
+	} else {
+		return -1
+	}
+}
+
+func Zrevrangebyscore(code, key string, max, min interface{}) []string {
+	defer catch()
+	conn := RedisPool[code].Get()
+	defer conn.Close()
+	ret, err := conn.Do("ZREVRANGEBYSCORE", key, max, min)
+	r := []string{}
+	if nil != err {
+		log.Println("redisutil-ZREVRANGEBYSCORE error", err)
+		return r
+	}
+	if res, ok := ret.([]interface{}); ok {
+		for _, v := range res {
+			r = append(r, string(v.([]uint8)))
+		}
+	}
+	return r
+}
+
+func Zrem(code, key string, member ...string) int64 {
+	defer catch()
+	conn := RedisPool[code].Get()
+	defer conn.Close()
+	args := []interface{}{key}
+	for _, v := range member {
+		args = append(args, v)
+	}
+	ret, err := conn.Do("ZREM", args...)
+	if nil != err {
+		log.Println("redisutil-ZREM error", err)
+		return -1
+	}
+	if res, ok := ret.(int64); ok {
+		return res
+	}
+	return -1
+}
+
 func catch() {
 	if r := recover(); r != nil {
 		log.Println(r)

+ 22 - 0
redis/redis_test.go

@@ -0,0 +1,22 @@
+package redis
+
+import (
+	"testing"
+)
+
+func init() {
+	InitRedis("main=192.168.3.242:1713")
+}
+func TestZadd(t *testing.T) {
+	t.Log(Zadd("main", "test", 1, "a"))
+	t.Log(Zadd("main", "test", 2, "b"))
+	t.Log(Zadd("main", "test", 3, "c"))
+}
+
+func TestZrevrangebyscore(t *testing.T) {
+	t.Log(Zrevrangebyscore("main", "test", "+inf", "-inf"))
+}
+
+func TestZrem(t *testing.T) {
+	t.Log(Zrem("main", "test", "b", "c"))
+}