redis zset命令

zset 是sets 一个升级 ,是有序集合,这一属性在添加修改元素的时候可以指定,
每次指定后,zset 会自动冲洗按心的值调整顺序,可以理解为两列的mysql表
一两存value,一列存顺序,key理解为zset名字

1  zadd 向集合中添加一个元素 如果值存在则更新顺序号
   zadd myset 1 one
   zadd myset 2 two
   zadd myset 3 three     

2  zrange  
    zrange myset 0 -1 withscores     withscores显示 顺序号

3 zrem 删除一个元素
  zrem  myset two

4 zincrby  对序号进行增加
  zincrby   myset 3 one     顺序号增加3个
  zincrby   myset -3 one    顺序号减少3个

5 zrank 按照索引排序 ,返回索引值

  zrank myset one

6 zrevrank 返回名称为key 的zset 中member 元素的排名
  (按照score从大到小的排序)即下标
  zrevrank myset two

7 zrevrange  降序排序


8 zrangebyscore
  zrangebyscore myset 2 3 withscores
  这里的2 和3  是顺序  不是inex

9 zcount
  返回score在给定区间的数量
 zcount myset 2 4

10 zcard 返回所有元素个数
   zcard myset

11 zremrangebyrank 删除集合中排名在给定区间的元素
    按照索引删除
   zremrangebyrank myset 1 1
   1 代表索引

12 zremrangebyscore 按照顺序删除

     zremrangebyscore myset 2 5
### Redis ZSet 命令详解 #### 1. 添加元素到有序集合 (ZADD) `ZADD key score member [score member ...]` 此命令用于向给定键对应的有序集中添加一个或多个成员,或者更新已存在成员的分数。如果某个成员已经存在于该有序集中,则会更新其分数。 ```bash 127.0.0.1:6379> ZADD myzset 1 "one" (integer) 1 ``` 上述例子创建了一个名为 `myzset` 的有序集合并插入了带有分数 `1` 和值 `"one"` 的成员[^1]. #### 2. 获取有序集合中的成员数 (ZCARD) `ZCARD key` 返回存储在指定键下的有序集合里的成员总数。 ```bash 127.0.0.1:6379> ZCARD myzset (integer) 1 ``` 这段代码展示了如何查询之前定义好的 `myzset` 中有多少个元素. #### 3. 计算特定分数组内的成员数目 (ZCOUNT) `ZCOUNT key min max` 统计位于最小(`min`)和最大(`max`)之间的成员数量(包括边界),其中可以使用 `-inf` 表示负无穷大而 `+inf` 则代表正无穷大。 ```bash 127.0.0.1:6379> ZCOUNT score 80 90 (integer) 2 ``` 这里说明了当有一个叫作 `score` 的有序集合时,可以通过这条指令得知得分为 `80~90` 范围内的人数是多少[^2]. #### 4. 返回按升序排列后的全部/部分成员及其得分 (ZRANGE/ZRANGEBYSCORE) - **ZRANGE**: `ZRANGE key start stop [WITHSCORES]` 提取从索引位置 `start` 至 `stop` 的所有条目;可选参数 `WITHSCORES` 将连同它们各自的评分一起返回。 - **ZRANGEBYSCORE**: `ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]` 根据分数范围获取数据项,并允许进一步通过 `LIMIT` 子句限制结果的数量以及起始偏移量。 ```bash # 使用 ZRANGE 并带上 WITHSCORES 参数显示成员及对应分数 127.0.0.1:6379> ZRANGE myzset 0 -1 WITHSCORES 1) "one" 2) "1" # 或者按照分数区间检索记录 127.0.0.1:6379> ZRANGEBYSCORE myscoreset 5 10 WITHSCORES LIMIT 0 2 ... ``` 这些命令可以帮助用户轻松地访问有序集合中排序过的项目列表^. #### 5. 删除指定排名区间的成员 (ZREMRANGEBYRANK) `ZREMRANGEBYRANK key start stop` 删除处于由低至高第 `start` 名次到第 `stop` 名次之间(含两端)的所有成员。 ```bash 127.0.0.1:6379> ZREMRANGEBYRANK leaderboard 0 10 (integer) 11 ``` 这行脚本表示清除了排行榜上前十一名的数据. #### 6. 移除具有相同分数的最大/最小成员 (ZPOPMAX / ZPOPMIN) - **ZPOPMAX**: `ZPOPMAX key [count]` 找出并移走拥有最高分数的一个或多于一个成员。 - **ZPOPMIN**: `ZPOPMIN key [count]` 类似地作用于最低分数端。 ```bash # 弹出单个最高分成员 127.0.0.1:6379> ZPOPMAX scores 1) "highest_scored_item" 2) "its_score_value" # 同样适用于弹出多份最低分作品 127.0.0.1:6379> ZPOPMIN items 3 ... ``` 以上两条语句分别演示了怎样高效处理极端情况下的数据点. #### 应用实例:任务调度系统 为了构建基于时间戳的任务队列,可以选择利用 Sorted Sets 结构来管理待办事项: - 把计划执行的时间作为 Score; - Task ID 设为 Member Value; - 当到达设定时刻即刻取出相应的 task 进行下一步动作。 例如,在实际应用当中可能会像下面这样操作: ```bash # 插入新任务 127.0.0.1:6379> ZADD tasks 1672531200 "task_id_1" # 查询即将到期的任务们 127.0.0.1:6379> ZRANGEBYSCORE tasks "-inf" "+inf" WITHSCORES LIMIT 0 10 ... ``` 这种设计模式非常适合用来安排周期性的后台作业或是定时触发某些事件的发生[^4].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值