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

有序集合 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"























































  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值