zrange descend

This commit is contained in:
Ally Dale
2019-08-09 17:14:39 +08:00
parent ebf8c9c0af
commit 4e80fa3817

View File

@@ -1123,8 +1123,8 @@ func (slf *RedisModule) ZADDInsert(key string, score float64, Data interface{})
return nil return nil
} }
func (slf *RedisModule) ZRangeJSON(key string, start, stop int, data interface{}) error { func (slf *RedisModule) ZRangeJSON(key string, start, stop int, ascend bool, data interface{}) error {
b, err := slf.ZRange(key, start, stop) b, err := slf.ZRange(key, start, stop, ascend)
if err != nil { if err != nil {
return err return err
} }
@@ -1135,22 +1135,26 @@ func (slf *RedisModule) ZRangeJSON(key string, start, stop int, data interface{}
return nil return nil
} }
func (slf *RedisModule) ZRange(key string, start, stop int) ([]byte, error) { //取有序set指定排名 ascend=true表示按升序遍历 否则按降序遍历
func (slf *RedisModule) ZRange(key string, start, stop int, ascend bool) ([]byte, error) {
conn, err := slf.getConn() conn, err := slf.getConn()
if err != nil { if err != nil {
return nil, err return nil, err
} }
defer conn.Close() defer conn.Close()
cmd := "ZREVRANGE"
reply, err := conn.Do("ZRANGE", key, start, stop) if ascend {
cmd = "ZRANGE"
}
reply, err := conn.Do(cmd, key, start, stop)
if err != nil { if err != nil {
return nil, err return nil, err
} }
return redis.Bytes(reply, err) return redis.Bytes(reply, err)
} }
func (slf *RedisModule) ZRangeByScoreJSON(key string, start, stop int, data interface{}) error { func (slf *RedisModule) ZRangeByScoreJSON(key string, start, stop int, ascend bool, data interface{}) error {
b, err := slf.ZRangeByScore(key, start, stop) b, err := slf.ZRangeByScore(key, start, stop, ascend)
if err != nil { if err != nil {
return err return err
} }
@@ -1161,32 +1165,35 @@ func (slf *RedisModule) ZRangeByScoreJSON(key string, start, stop int, data inte
return nil return nil
} }
func (slf *RedisModule) ZRangeByScore(key string, start, stop int) ([]byte, error) { func (slf *RedisModule) ZRangeByScore(key string, start, stop int, ascend bool) ([]byte, error) {
conn, err := slf.getConn() conn, err := slf.getConn()
if err != nil { if err != nil {
return nil, err return nil, err
} }
defer conn.Close() defer conn.Close()
cmd := "ZREVRANGEBYSCORE"
reply, err := conn.Do("ZRANGEBYSCORE", key, start, stop) if ascend {
cmd = "ZRANGEBYSCORE"
}
reply, err := conn.Do(cmd, key, start, stop)
if err != nil { if err != nil {
return nil, err return nil, err
} }
return redis.Bytes(reply, err) return redis.Bytes(reply, err)
} }
func (slf *RedisModule) ZREMRANGEBYSCORE(key string, start, stop interface{}) ( error) { func (slf *RedisModule) ZREMRANGEBYSCORE(key string, start, stop interface{}) error {
conn, err := slf.getConn() conn, err := slf.getConn()
if err != nil { if err != nil {
return err return err
} }
defer conn.Close() defer conn.Close()
_ , err = conn.Do("ZREMRANGEBYSCORE", key, start, stop) _, err = conn.Do("ZREMRANGEBYSCORE", key, start, stop)
if err != nil { if err != nil {
return err return err
} }
return err return err
} }
func (slf *RedisModule) LRangeJSON(key string, start, stop int, data interface{}) error { func (slf *RedisModule) LRangeJSON(key string, start, stop int, data interface{}) error {