您的位置:首页 > 理论基础 > 数据结构算法

Redis 数据结构之有序集合(sort set)

2018-01-14 21:56 826 查看
有序集合sortset的元素包括score(分数,int/float) ,value(成员,string/int/float) ,rank等三个属性,

(1)实际上是score 和 value的映射;

(2)value 在有序集合中必须是唯一的,score可以重复;

(3)rank 从0 开始,score越大,rank值越大,相同分数,value中的字母在字典中越后,rank值越大;

127.0.0.1:6379>

127.0.0.1:6379> get new:counter

"1"

127.0.0.1:6379> incr new:counter

(integer) 2

127.0.0.1:6379> zadd sort-set:2 99 zhangsan

(integer) 1

127.0.0.1:6379> zadd sort-set:2 92.5 lisi

(integer) 1

127.0.0.1:6379> zadd sort-set:2 97.50 wangwu

(integer) 1

zrange 按照字典字母表顺序取出所有元素的value

127.0.0.1:6379> zrange sort-set:2 0 -1

1) "lisi"

2) "wangwu"

3) "zhangsan"
withscores 关键字返回元素的score值

127.0.0.1:6379> zrange sort-set:2 0 -1 withscores

1) "lisi"

2) "92.5"

3) "wangwu"

4) "97.5"

5) "zhangsan"

6) "99"
zrevrange 按照字典字母表倒序顺序取出所有元素的value

127.0.0.1:6379> zrevrange sort-set:2 0 -1 withscores

1) "zhangsan"

2) "99"

3) "wangwu"

4) "97.5"

5) "lisi"

6) "92.5"
zcard 返回有序集合size

127.0.0.1:6379> zcard sort-set:2

(integer) 3
zrank 返回集合中当前元素的rank属性(rank值)

127.0.0.1:6379> zrank sort-set:2 wangwu

(integer) 1
zrangebylex以字典顺序获取集合中元素的value,类似的还有 zrevrangebylex, zlexcount命令

127.0.0.1:6379> zadd sort-set:2 92.5 zhuliu 90 qianqi

(integer) 2

127.0.0.1:6379> zrange sort-set:2 0 -1

1) "qianqi"

2) "lisi"

3) "zhuliu"

4) "wangwu"

5) "zhangsan"

127.0.0.1:6379> zrange sort-set:2 0 -1 withscores

 1) "qianqi"

 2) "90"

 3) "lisi"

 4) "92.5"

 5) "zhuliu"

 6) "92.5"

 7) "wangwu"

 8) "97.5"

 9) "zhangsan"

10) "99"

当元素的value值重复时,zadd 只修改该元素的value值,不添加元素

127.0.0.1:6379> zadd sort-set:2 95 qianqi

(integer) 0

127.0.0.1:6379> zrange sort-set:2 0 -1 withscores

 1) "lisi"

 2) "92.5"

 3) "zhuliu"

 4) "92.5"

 5) "qianqi"

 6) "95"

 7) "wangwu"

 8) "97.5"

 9) "zhangsan"

10) "99"

127.0.0.1:6379> zrevrange sort-set:2 0 -1 withscores

 1) "zhangsan"

 2) "99"

 3) "wangwu"

 4) "97.5"

 5) "qianqi"

 6) "95"

 7) "zhuliu"

 8) "92.5"

 9) "lisi"

10) "92.5"
-表示负无穷,+表示正无穷

127.0.0.1:6379> zrangebylex sort-set:2 - +

1) "lisi"

2) "zhuliu"

3) "qianqi"

4) "wangwu"

5) "zhangsan"

127.0.0.1:6379> zadd sort-set:2 92.5 qianqi

(integer) 0

127.0.0.1:6379> zrangebylex sort-set:2 - +

1) "lisi"

2) "qianqi"

3) "zhuliu"

4) "wangwu"

5) "zhangsan"

字符前的(表示排除该字符串的值,[表示包含该字符串的值

127.0.0.1:6379> zrangebylex sort-set:2 (l [q

1) "lisi"

127.0.0.1:6379> zrangebylex sort-set:2 (l (q

1) "lisi"

127.0.0.1:6379> zrangebylex sort-set:2 (l [z

1) "lisi"

2) "qianqi"

127.0.0.1:6379> zrangebylex sort-set:2 (l (z

1) "lisi"

2) "qianqi"

127.0.0.1:6379> zrangebylex sort-set:2 (lisi (z

1) "qianqi"

127.0.0.1:6379> zrangebylex sort-set:2 (lisi [zhangsan

1) "qianqi"

127.0.0.1:6379> zrangebylex sort-set:2 (lisi [zhuliu

1) "qianqi"

2) "zhuliu"

3) "wangwu"

4) "zhangsan"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: