Redis的数据结构之sorted-set

原文:http://blog.java1234.com/blog/articles/320.html

存储Sorted-Set

Sorted-Set和Set的区别

 

Sorted-Set中的成员在集合中的位置是有序的

 

存储Sorted-set常用命令

添加元素

获得元素

删除元素

范围查询

扩展命令

 

zadd 添加元素 里面包括评分和值

127.0.0.1:6379> zadd sort1 5 a 4 b 6 c

(integer) 3

我们添加集合sort1 元素是a,b,c 评分分别是5,4,6

集合里的排序是根据评分从小到大排序的;

 

zrange是查找元素 -1代表是最后一个

127.0.0.1:6379> zrange sort1 0 -1

1) "b"

2) "a"

3) "c"

 

假如我们继续添加元素

这里分两种情况

假如次元素集合里面已经有了,则覆盖

我们继续添加b 此时评分改成7 

127.0.0.1:6379> zadd sort1 7 b

(integer) 0

通过zscore 获取b的评分

127.0.0.1:6379> zscore sort1 b

"7"

发现已经修改了;

127.0.0.1:6379> zrange sort1 0 -1

1) "a"

2) "c"

3) "b"

假如添加的元素不在集合里,则添加进去

127.0.0.1:6379> zadd sort1 9 d

(integer) 1

127.0.0.1:6379> zrange sort1 0 -1

1) "a"

2) "c"

3) "b"

4) "d"

 

删除元素zrem

127.0.0.1:6379> zrem sort1 b

(integer) 1

127.0.0.1:6379> zrange sort1 0 -1

1) "a"

2) "c"

3) "d"

 

zcard 查看集合里的元素个数

127.0.0.1:6379> zcard sort1

(integer) 3

 

withscores  把评分也显示出来

127.0.0.1:6379> zrange sort1 0 -1 withscores 

1) "a"

2) "5"

3) "c"

4) "6"

5) "d"

6) "9"

 

zrevrange 降序排列

127.0.0.1:6379> zrevrange sort1 0 -1 withscores

1) "d"

2) "9"

3) "c"

4) "6"

5) "a"

6) "5"

 

我们再加两个元素

127.0.0.1:6379> zadd sort1 10 e  5 f

(integer) 2

 

zremrangebyrank 根据排名来删除元素  删除3个

127.0.0.1:6379> zremrangebyrank sort1 0 2

(integer) 3

127.0.0.1:6379> zrange sort1 0 -1 withscores

1) "d"

2) "9"

3) "e"

4) "10"

 

再添加元素

127.0.0.1:6379> zadd sort1 11 f 16 g 18 h

(integer) 3

127.0.0.1:6379> zrange sort1 0 -1 withscores

 1) "d"

 2) "9"

 3) "e"

 4) "10"

 5) "f"

 6) "11"

 7) "g"

 8) "16"

 9) "h"

10) "18"

 

zremrangebyscore 根据具体评分范围来删除元素

127.0.0.1:6379> zremrangebyscore sort1 10 16

(integer) 3

127.0.0.1:6379> zrange sort1 0 -1 withscores

1) "d"

2) "9"

3) "h"

4) "18"

 

再添加元素

127.0.0.1:6379> zadd sort1 20 i 23 j 30 k

(integer) 3

127.0.0.1:6379> zrange sort1 0 -1 withscores

 1) "d"

 2) "9"

 3) "h"

 4) "18"

 5) "i"

 6) "20"

 7) "j"

 8) "23"

 9) "k"

10) "30"

 

zrangebyscore 根据评分范围来查找元素

127.0.0.1:6379> zrangebyscore sort1 18 23 withscores 

1) "h"

2) "18"

3) "i"

4) "20"

5) "j"

6) "23"

 

limit 限定查找起始 类似分页

127.0.0.1:6379> zrangebyscore sort1 18 23 withscores limit 0 2

1) "h"

2) "18"

3) "i"

4) "20"

 

zincrby 给指定元素加分

127.0.0.1:6379> zincrby sort1 5 h

"23"

 

127.0.0.1:6379> zrange sort1 0 -1 withscores

 1) "d"

 2) "9"

 3) "i"

 4) "20"

 5) "h"

 6) "23"

 7) "j"

 8) "23"

 9) "k"

10) "30"

 

zcount 查找指定评分范围的元素个数

127.0.0.1:6379> zcount sort1 20 23

(integer) 3

 

Sorted-Set使用场景

大型在线游戏积分排行榜

构建索引数据

 

原文地址:https://www.cnblogs.com/gyadmin/p/8251834.html