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

本文详细介绍了Redis有序集合SortSet的数据结构及其操作命令。包括元素的组成(score和value)、value的唯一性、score的可重复性、rank的概念及计算方式。通过具体实例展示了如何使用zadd、zrange、zrevrange等命令进行元素增删查改,并解释了当value重复时zadd的行为变化。
部署运行你感兴趣的模型镜像
有序集合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"























































您可能感兴趣的与本文相关的镜像

Kotaemon

Kotaemon

AI应用

Kotaemon 是由Cinnamon 开发的开源项目,是一个RAG UI页面,主要面向DocQA的终端用户和构建自己RAG pipeline

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值