Redis

关注公众号 jb51net

关闭
首页 > 数据库 > Redis > Redis Zset命令

Redis中Zset类型常用命令的实现

作者:时光不染。回忆不淡

Zset是Redis的一种有序集合数据类型,Zset通过压缩列表和跳跃表两种底层编码方式支持小数据集和大数据集,支持多种操作,包括添加、查询、删除元素以及集合运算等,具有不同的时间复杂度,感兴趣的可以了解一下

一. Zset有序集合简介.

二. 添加元素相关命令.

2.1 向有序集合中添加元素(zadd)

ZADD key [NX | XX] [GT | LT] [CH] [INCR] score member [score member ...]

解释参数含义:

时间复杂度:

O(log(N)),其中N是排序集合中元素的个数。

演示命令的使用:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

三. 查询元素相关操作.

3.1 查询有序集合中的元素个数( zcard zcount)

命令基本格式:

ZCARD keyZCOUNT key min max

时间复杂度:

zcard O(1)zcount O(log(N)) N是排序集合中元素的个数。

演示命令的使用:

在这里插入图片描述

3.2 查询指定区间内的元素(zrange zrevrange zrangebyscore)

命令基本格式:

ZRANGE key start stop [BYSCORE | BYLEX] [REV] [LIMIT offset count] [WITHSCORES] 获取指定下标范围内的元素
ZREVRANGE key start stop [WITHSCORES] 逆序获取指定下标范围内的元素
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] 按照分数来找元素,和zcount的效果类似

时间复杂度:

zrange O(log(N)+M),其中N是排序集合中的元素个数,M是返回的元素个数。
zrevrange O(log(N)+M),其中N是排序集合中的元素个数,M是返回的元素个数。
zrangebyscore O(log(N)+M)其中N是排序集合中的元素个数M是返回的元素个数。如果M是常数(例如总是要求前10个元素有LIMIT),你可以认为它是O(log(N))。

演示命令的使用:

在这里插入图片描述

3.3 查询有序集合中指定成员的排名(zrank zrevrank )

命令基本格式:

ZRANK key member [WITHSCORE] 查询有序集合中指定成员的排名
ZREVRANK key member [WITHSCORE] 查询有序集合中指定成员的逆序排名

时间复杂度:

O(log(N))

演示命令的使用:

在这里插入图片描述

3.4 查询有序集合中指定成员的分数(zscore)

命令基本格式:

ZSCORE key member查询有序集合中指定成员的分数

时间复杂度:

O(1)

演示命令的使用:

在这里插入图片描述

四. 删除元素相关操作.

4.1 删除并返回最大/最小的n个元素(zpopmax zpopmin)

命令基本格式:

ZPOPMAX key [count] 删除并返回最大的n个元素
ZPOPMIN key [count] 删除并返回最小的n个元素

时间复杂度:

都是 O(log(N)*M)其中N是排序集合中的元素个数,M是弹出的元素个数。

演示命令的使用:

在这里插入图片描述

4.2 带有阻塞性质删除最大/小元素(bzpopmin bzpopmax)

命令基本格式:

BZPOPMAX key [key ...] timeoutBZPOPMIN key [key ...] timeout

时间复杂度:

O(log(N)) N是排序集合中元素的个数O(log(N)) N是排序集合中元素的个数

演示命令的使用:

在这里插入图片描述

在这里插入图片描述

4.3 删除有序集合中的n个元素( zrem zremrangebyrank zremrangebyscore)

命令基本格式:

ZREM key member [member ...] 删除有序集合中的n个元素
ZREMRANGEBYRANK key start stop 删除有序集合中指定排名范围内的成员
ZREMRANGEBYSCORE key min max 删除有序集合中指定分数范围内的成员

时间复杂度:

zrem O(M*log(N)),其中N是排序集合中元素的个数,M是要移除的元素的个数
zremrangebyrank O(log(N)+M),其中N是排序集合中的元素个数,M是操作移除的元素个数
zremrangebyscore O(log(N)+M),其中N是排序集合中的元素个数,M是操作移除的元素个数。

演示命令的使用:

在这里插入图片描述

五. 集合运算相关操作.

5.1 求有序集合交集的操作(zinterstore)

命令基本格式:

ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE <SUM | MIN | MAX>]

解释参数含义:

时间复杂度:

O(N*K)+O(M*log(M))最坏情况,其中N是最小的输入排序集,K是输入排序集的个数,M是结果排序集中元素的个数。

5.2 求集合并集的操作(zunionstore)

命令基本格式:

ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE <SUM | MIN | MAX>]

时间复杂度:

O(N)+O(M log(M)),其中N是输入排序集的大小之和,M是结果排序集的元素个数。

演示命令的使用:

在这里插入图片描述

到此这篇关于Redis中Zset类型常用命令的实现的文章就介绍到这了,更多相关Redis Zset命令内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

您可能感兴趣的文章:
阅读全文