目录

一、简介

二、使用详解

三、总结


一、简介

ZSet,简称Sorted Set有序集合,和集合一样也是String类型元素的集合, 且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数Score。redis正是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数(score)却可以重复。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 2^32 - 1(4294967295, 每个集合可存储40多亿个成员)。

和Set的区别:在Set基础上加上一个Score值,之前Set是k1 v1 v2 v3,现在ZSet是k1 score v1 score v2...。

下面通过一张表总结ZSet有序列表中常用命令:

ZSet数据类型常用命令

命令

使用说明

zadd

向集合中添加一个或者多个元素(score - value对)

zrange

获取集合中的元素,如果加上withscores则会连同分数一并返回

zrangebyscore

返回指定分数范围的元素

zrem

删除元素

zcard

返回集合中元素个数

zcount

统计集合中元素的分数在min和max之间的个数

zrank

获取元素在集合中的排名

zscore

获取有序集合中元素对应的分数值

zrevrank

逆序获得下标值

zrevrange

倒序返回集合中的元素

zrevrangebyscore

倒序根据分数范围输出集合元素

二、使用详解

【a】zadd/zrange

  • zadd:向集合中添加一个或者多个元素(score - value对);
  • zrange:获取集合中的元素,如果加上withscores则会连同分数一并返回;

Zset命令集合 java redis redis zset详解_有序集合

注意:withscores参数会将分数一起返回,如下图

Zset命令集合 java redis redis zset详解_redis_02

【b】zrangebyscore

  • zrangebyscore:返回指定分数范围的元素;

Zset命令集合 java redis redis zset详解_ZSet_03

注意:符号“(” 表示不包含。

【c】zrem

  • zrem:删除元素,注意删除不存在的元素返回0;

Zset命令集合 java redis redis zset详解_redis ZSet_04

 

Zset命令集合 java redis redis zset详解_Zset命令集合 java redis_05

【d】zcard/zcount/zrank/zscore

  • zcard :返回集合中元素个数;
  • zcount:统计集合中元素的分数在min和max之间的个数;
  • zrank:获取元素在集合中的排名,从小到大排序,最小的排名是0,如果元素不存在,则返回 nil;
  • zscore:获取有序集合中元素对应的分数值,如果元素不存在,返回nil;

Zset命令集合 java redis redis zset详解_有序集合_06

【e】zrevrank

  • zrevrank:作用是逆序获得下标值;

Zset命令集合 java redis redis zset详解_redis_07

【f】zrevrange

  • zrevrange:倒序返回集合中的元素;

Zset命令集合 java redis redis zset详解_redis ZSet_08

【g】zrevrangebyscore

  • zrevrangebyscore:倒序根据分数范围输出集合元素,注意大的分数需要写在前面,小的分数写在后面;

Zset命令集合 java redis redis zset详解_redis_09

三、总结

以上就是关于ZSet有序列表相关命令的学习总结,如有不对之处还望指正,相互学习,共同进步。