跳至主要內容

2.8 Redis数据类型_Zset 🎉

刘春龙...大约 2 分钟数据库redis

2.8 Redis数据类型_Zset 🎉

Zset与Set非常相似,是一个没有重复元素的String集合。不同之处是Zset的每个元素都关联了一个分数(score),这个分数被用来按照从低分到高分的方式排序集合中的元素。集合的元素是唯一的,但分数可以重复。

因为元素是有序的,所以可以根据分数(score)或者次序(position)来获取一个范围内的元素。

  • zadd
    将一个或多个元素(value)及分数(score)加入到有序集key中。
zadd k1 100 java 200 c++ 300 python 400 php

提示

  • 如果某个元素已经是有序集的元素,那么更新这个元素的分数值,并通过重新插入这个元素,来保证该元素在正确的位置上。
  • 分数值可以是整数值或双精度浮点数。
  • 如果有序集合 key 不存在,则创建一个空的有序集并执行 zadd 操作。
  • zrange
    返回key集合中的索引start和索引end之间的元素(包含start和end)。
zrange k1 0 -1    # 返回集合中所有元素
zrange k1 0 -1 withscores    # 返回集合中所有元素,并携带元素分数

提示

  • 其中元素的位置按分数值递增(从小到大)来排序。 其中 0 表示列表的第一个元素,-1表示最后一个元素。
  • withscores是可选参数,是否返回分数。
  • zrangebyscore
    返回key集合中的分数minscore 和分数maxscore 之间的元素(包含minscore 和maxscore )。其中元素的位置按分数值递增(从小到大)来排序。
zrangebyscore k1 200 400     # 返回200-400分之间的元素递增排序
  • zincrby
    为元素value的score加上increment的值。
zincrby k1 50 java       # 给java元素加上50分
  • zrem
    删除该集合下value的元素
zrem k1 php
  • zcount
    统计该集合在minscore 到maxscore分数区间中元素的个数。
zcount k1 100 300         # 统计100分到300分中间元素的个数
  • zrank
    返回value在集合中的排名,从0开始。
zrank k1 c++   # 返回c++排名

使用场景

  • 延时队列
  • 排行榜
  • 限流
上次编辑于:
贡献者: 刘春龙
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.7