Redis(9)--Redis的数据结构之sorted-set

1 sorted_set 类型

  • 新的存储需求:数据排序有利于数据的有效展示,需要提供一种可以根据自身特征进行排序的方式。
  • 需要的存储结构:新的存储模型,可以保存可排序的数据。
  • sorted_set类型:在set的存储结构基础上添加可排序字段。
    在这里插入图片描述

2 sorted_set 类型数据的基本操作

2.1 添加数据
zadd key score1 member1 [score2 member2]
2.2 获取全部数据
zrange key start stop [WITHSCORES]
zrevrange key start stop [WITHSCORES]
2.3 删除数据
zrem key member [member ...]
2.4 按条件获取数据
zrangebyscore key min max [WITHSCORES] [LIMIT]
zrevrangebyscore key max min [WITHSCORES]
2.5 条件删除数据
zremrangebyrank key start stop
zremrangebyscore key min max

注意:

  • min与max用于限定搜索查询的条件。
  • start与stop用于限定查询范围,作用于索引,表示开始和结束索引。
  • offset与count用于限定查询范围,作用于查询结果,表示开始位置和数据总量。
2.6 获取集合数据总量
zcard key
zcount key min max
2.7 集合交、并操作
zinterstore destination numkeys key [key ...]
zunionstore destination numkeys key [key ...]
2.8 获取数据对应的索引(排名)
zrank key member
zrevrank key member
2.9 score值获取与修改
zscore key member
zincrby key increment member

3 演示案例

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

127.0.0.1:6379> zadd sort1 5 a 4 b 6 c
(integer) 3

我们添加集合sort1 元素是a,b,c 评分分别是5,4,6
集合里的排序是根据评分从小到大排序的;
(2)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

(3)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"

(4)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"

(5)zcard 查看集合里的元素个数

127.0.0.1:6379> zcard sort1
(integer) 3

(6)withscores 把评分也显示出来

127.0.0.1:6379> zrange sort1 0 -1 withscores 
1) "a"
2) "5"
3) "c"
4) "6"
5) "d"
6) "9"

(7)zrevrange 降序排列

127.0.0.1:6379> zrevrange sort1 0 -1 withscores
1) "d"
2) "9"
3) "c"
4) "6"
5) "a"
6) "5"

(8)zremrangebyrank 根据排名来删除元素
删除3个
我们再加两个元素

127.0.0.1:6379> zadd sort1 10 e  5 f
(integer) 2
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"

(9)zremrangebyscore 根据具体评分范围来删除元素
先添加元素

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"
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"

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

127.0.0.1:6379> zrangebyscore sort1 18 23 withscores 
1) "h"
2) "18"
3) "i"
4) "20"
5) "j"
6) "23"

(11)limit 限定查找起始 类似分页

127.0.0.1:6379> zrangebyscore sort1 18 23 withscores limit 0 2
1) "h"
2) "18"
3) "i"
4) "20"

(12)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"

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

127.0.0.1:6379> zcount sort1 20 23
(integer) 3

Sorted-Set使用场景
大型在线游戏积分排行榜
构建索引数据

redis解决方案列表

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术闲聊DD

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值