redis中Zset有序集合类型常用命令
redis中Zset有序集合类型常用命令
Redis有序集合zset与普通集合set非常相似,是一个没有重复元素的字符串集合
不同之处是有序集合的每个成员都关联了一个评分(score),这个评分(score)被用来按照从最低分到最高分的方式排序集合中的成员,集合的成员是唯一的,但是评分可以重复
因为元素是有序的, 所以你也可以很快的根据评分(score)或者次序(position)来获取一个范围的元素
下面介绍一些zset类型的常用命令
- 添加键值对:zadd key score1 value1 score2 value2 score3 value3......,eg:
127.0.0.1:6379> zadd key1 1 k1v1 2 k1v2 3 k1v3
(integer) 3
- 查询指定key对应zset指定范围值:zrange key 起始位置 结束位置(-1表示最后),eg:
127.0.0.1:6379> zrange key1 0 -1
1) "k1v1"
2) "k1v2"
3) "k1v3"
- 查询指定key对应zset指定范围值和分数:zrange key 起始位置 结束位置(-1表示最后),eg:
127.0.0.1:6379> zrange key1 0 -1 withscores
1) "k1v1"
2) "1"
3) "k1v2"
4) "2"
5) "k1v3"
6) "3"
- 查询指定key对应zset的socre在指定范围内的value(结果按socre从小到大排列):zrangebyscore key score1 score2 [withscores],(score1<score2)eg:
127.0.0.1:6379> zrange key1 0 -1 withscores
1) "k1v1"
2) "1"
3) "k1v2"
4) "2"
5) "k1v3"
6) "3"
127.0.0.1:6379> zrangebyscore key1 1 2
1) "k1v1"
2) "k1v2"
127.0.0.1:6379> zrangebyscore key1 1 2 withscores
1) "k1v1"
2) "1"
3) "k1v2"
4) "2"
# 结果按score从负无穷到正无穷排序
127.0.0.1:6379> zrangebyscore key1 -inf +inf
1) "k1v1"
2) "k1v2"
3) "k1v3"
# 结果按score从负无穷到正无穷排序并且显示score
127.0.0.1:6379> zrangebyscore key1 -inf +inf withscores
1) "k1v1"
2) "1"
3) "k1v2"
4) "2"
5) "k1v3"
6) "3"
- 查询指定key对应zset的下标在指定范围内的value(结果按socre从大到小排列):zrevrange key 起始位置 结束位置 [withscores]
127.0.0.1:6379> zrange key1 0 -1 withscores
1) "k1v1"
2) "1"
3) "k1v2"
4) "2"
5) "k1v3"
6) "3"
127.0.0.1:6379> zrevrange key1 0 -1
1) "k1v3"
2) "k1v2"
3) "k1v1"
127.0.0.1:6379> zrevrange key1 0 -1 withscores
1) "k1v3"
2) "3"
3) "k1v2"
4) "2"
5) "k1v1"
6) "1"
- 查询指定key对应zset的socre在指定范围内的value(结果按socre从大到小排列):zrevrangebyscore key score1 score2 [withscores],(score1>score2)eg:
127.0.0.1:6379> zrange key1 0 -1 withscores
1) "k1v1"
2) "1"
3) "k1v2"
4) "2"
5) "k1v3"
6) "3"
127.0.0.1:6379> zrevrangebyscore key1 3 1
1) "k1v3"
2) "k1v2"
3) "k1v1"
127.0.0.1:6379> zrevrangebyscore key1 3 1 withscores
1) "k1v3"
2) "3"
3) "k1v2"
4) "2"
5) "k1v1"
6) "1"
- 删除指定key对应zset中的value:zrem key value1 value2 value3......,eg:
127.0.0.1:6379> zrange key1 0 -1
1) "k1v1"
2) "k1v2"
3) "k1v3"
127.0.0.1:6379> zrem key1 k1v1 k1v2
(integer) 2
127.0.0.1:6379> zrange key1 0 -1
1) "k1v3"
- 查询指定key对应zset中的元素个数:zcard key,eg:
127.0.0.1:6379> zrange key1 0 -1
1) "k1v3"
127.0.0.1:6379> zcard key1
(integer) 1
- 查询指定key对应zset中score在指定范围内的元素个数:zcount key score1 score2(score1<score2),eg:
127.0.0.1:6379> zrange key2 0 -1 withscores
1) "k2v1"
2) "100"
3) "k2v2"
4) "200"
5) "k2v3"
6) "300"
127.0.0.1:6379> zcount key2 100 200
(integer) 2
- 将指定key对应zset的value对应score增加n:zincrby key n value,eg:
127.0.0.1:6379> zrange key2 0 -1 withscores
1) "k2v1"
2) "100"
3) "k2v2"
4) "200"
5) "k2v3"
6) "300"
127.0.0.1:6379> zincrby key2 1 k2v1
"101"
127.0.0.1:6379> zrange key2 0 -1 withscores
1) "k2v1"
2) "101"
3) "k2v2"
4) "200"
5) "k2v3"
6) "300"
- 查询指定key对应zset的value的下标:zrank key value,eg:
127.0.0.1:6379> zrange key2 0 -1
1) "k2v1"
2) "k2v2"
3) "k2v3"
127.0.0.1:6379> zrank key2 k2v2
(integer) 1
记得快乐
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!