Redis(七)zset 有序集合

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数(score)却可以重复。

QQ图片20220425171308.jpg

Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。


不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。


有序集合的成员是唯一的,但分数(score)却可以重复。


一:zset有序集合数据结构


[
    "user":[
        "camellia1":90,
        "camellia2":100,
        "camellia3":90
    ]
]


二:zset有序集合相关操作命令(PHP+linux)


1:linux命令使用


(1):添加一个键值对到有序集合。如果 成功则返回1;如果键已经存在,返回0


zadd zset-key 90 "camellia1"   // 执行成功返回1
zadd zset-key 100 "camellia2"   // 执行成功返回1
zadd zset-key 90 "camellia3"   // 执行成功返回1
zadd zset-key 90 "camellia1"   // 执行失败返回0

(2):通过hscore获取一个给定键camellia1的值。


zscore zset-key "camellia1"               // 返回90

(3):获取添加的所有元素,查看刚刚的到底添加了哪几个值


zrange zset-key 0 -1 withscores
输出:
1) "camellia1"
2) "90"
3) "camellia3"
4) "90"
5) "camellia2"
6) "100"

(4):删除一个键,成功返回1,否则,返回0


zrem zset-key "camellia1"   // 返回1


2:PHP命令使用


(1):插入一个键值对到zset-key有序集合。1代表插入成功;0元素代表已经存在


// 插入一个键值对到zset-key有序集合。1代表插入成功;0元素代表已经存在
    $res = $redis->zadd("zset-key",900,'camellia1'); // 返回1

(2):使用zscore获取键对应的值。我们试试获取camellia1的值。


// 取值
    $aa = $redis->zscore("zset-key","camellia1");
    var_dump($aa);           // 返回 900

(3):使用zrange获取刚刚插入的全部值,看看里面包含哪些键值对


// 获取刚刚插入的值
    $str = $redis->zrange("zset-key",0,-1,true);
输出:结果是一个完整的数组
array(3) { [90]=> float(0) [900]=> float(0) ["camellia1"]=> float(900) }

(4):删除其中一个键。成功返回1,反之,返回0


rrr=redis->zrem("zset-key","90"); // 返回int 1 var_dump($rrr);


3:zset常用命令


序号


命令及描述


1


ZADD   key score1 member1 [score2 member2] 
  向有序集合添加一个或多个成员,或者更新已存在成员的分数


2


ZCARD   key 
  获取有序集合的成员数


3


ZCOUNT   key min max 
  计算在有序集合中指定区间分数的成员数


4


ZINCRBY   key increment member 
  有序集合中对指定成员的分数加上增量 increment


5


ZINTERSTORE   destination numkeys key [key ...] 
  计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中


6


ZLEXCOUNT   key min max 
  在有序集合中计算指定字典区间内成员数量


7


ZRANGE   key start stop [WITHSCORES] 
  通过索引区间返回有序集合指定区间内的成员


8


ZRANGEBYLEX   key min max [LIMIT offset count] 
  通过字典区间返回有序集合的成员


9


ZRANGEBYSCORE   key min max [WITHSCORES] [LIMIT] 
  通过分数返回有序集合指定区间内的成员


10


ZRANK   key member 
  返回有序集合中指定成员的索引


11


ZREM   key member [member ...] 
  移除有序集合中的一个或多个成员


12


ZREMRANGEBYLEX   key min max 
  移除有序集合中给定的字典区间的所有成员


13


ZREMRANGEBYRANK   key start stop 
  移除有序集合中给定的排名区间的所有成员


14


ZREMRANGEBYSCORE   key min max 
  移除有序集合中给定的分数区间的所有成员


15


ZREVRANGE   key start stop [WITHSCORES] 
  返回有序集中指定区间内的成员,通过索引,分数从高到低


16


ZREVRANGEBYSCORE   key max min [WITHSCORES] 
  返回有序集中指定分数区间内的成员,分数从高到低排序


17


ZREVRANK   key member 
  返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序


18


ZSCORE   key member 
  返回有序集中,成员的分数值


19


ZUNIONSTORE   destination numkeys key [key ...] 
  计算给定的一个或多个有序集的并集,并存储在新的 key 中


20


ZSCAN   key cursor [MATCH pattern] [COUNT count] 
  迭代有序集合中的元素(包括元素成员和元素分值)


以上基本上是我看的redis ZSET有序集合类型的基本内容,有不足的地方,还请大佬指出。



目录
相关文章
|
7月前
|
存储 NoSQL Redis
投行系统的毫秒级榜单响应:如何用Redis ZSET破解同分排序难题?
通过Redis的ZSET数据结构和更新时间戳,解决投行交易系统实时排行榜中同分跳变的问题。具体方案为:将交易量作为整数部分,更新时间戳作为小数部分,确保同分时按最新更新排序,实现实时、高效、无需应用层干预的排行榜功能。一句话总结:通过Redis ZSET加更新时间戳,解决百万交易排行榜实时显示及同分难题。
|
消息中间件 存储 负载均衡
Redis使用ZSET实现消息队列使用总结二
Redis使用ZSET实现消息队列使用总结二
180 0
|
12月前
|
存储 NoSQL 关系型数据库
Redis 有序集合(sorted set)
10月更文挑战第17天
255 4
|
存储 NoSQL 算法
深入理解Redis数据类型Zset原理
本文深入探讨了Redis中的Zset(有序集合)数据类型,它是一种可以存储排序功能的集合,其中每个元素都具有一个浮点型的score属性,用于根据score进行排序。
深入理解Redis数据类型Zset原理
|
11月前
|
存储 NoSQL 关系型数据库
Redis的ZSet底层数据结构,ZSet类型全面解析
Redis的ZSet底层数据结构,ZSet类型全面解析;应用场景、底层结构、常用命令;压缩列表ZipList、跳表SkipList;B+树与跳表对比,MySQL为什么使用B+树;ZSet为什么用跳表,而不是B+树、红黑树、二叉树
|
11月前
|
存储 NoSQL Redis
Redis常见面试题:ZSet底层数据结构,SDS、压缩列表ZipList、跳表SkipList
String类型底层数据结构,List类型全面解析,ZSet底层数据结构;简单动态字符串SDS、压缩列表ZipList、哈希表、跳表SkipList、整数数组IntSet
|
存储 NoSQL 算法
Redis6入门到实战------ 三、常用五大数据类型(列表(List)、集合(Set)、哈希(Hash)、Zset(sorted set))
这是关于Redis 6入门到实战的文章,具体内容涉及Redis的五大数据类型:列表(List)、集合(Set)、哈希(Hash)、有序集合(Zset(sorted set))。文章详细介绍了这些数据类型的特点、常用命令以及它们背后的数据结构。如果您有任何关于Redis的具体问题或需要进一步的帮助,请随时告诉我。
|
存储 NoSQL API
7)深度解密 Redis 的有序集合(ZSet)
7)深度解密 Redis 的有序集合(ZSet)
184 0
|
NoSQL Redis 索引
Redis 中ZSET数据类型命令使用及对应场景总结
Redis 中ZSET数据类型命令使用及对应场景总结
256 2
|
消息中间件 存储 NoSQL
Redis使用ZSET实现消息队列使用总结一
Redis使用ZSET实现消息队列使用总结一
299 0

热门文章

最新文章