集合(Set)和有序集合(ZSet)的基本使用方法详解【Redis】
创始人
2024-01-20 04:38:41
0

文章目录

  • 一. Redis中的集合(Set)
    • 1.1基本的一些操作
      • 1.1.1 smembers查看集合中的所有成员
      • 1.1.2 scard删除成员数量
      • 1.1.3 smove移动成员
      • 1.1.4 sinterstore 存储俩个集合的交集
  • 二.Redis中的有序集合(ZSet)
    • 2.1 基本的一些操作
      • 2.1.1 zadd添加1到多个成员
      • 2.1.2 zcount 返回指定分数区间的成员数量
      • 2.1.3 zcard 返回指定成员数量

一. Redis中的集合(Set)

Set是String类型的无序集合。集合成员是唯一的,重复的数据不能出现在集合中。

1.1基本的一些操作

image-20221104230313551

image-20221104231411838

1.1.1 smembers查看集合中的所有成员

Redis Smembers 命令返回集合中的所有的成员。 不存在的集合 key 被视为空集合。

先添加多个成员:

127.0.0.1:6379> sadd s1 a 1 a b 2 3 5
(integer) 6

使用smembers命令查看,可以看出来是乱序的。

127.0.0.1:6379> smembers s1
1) "2"
2) "a"
3) "1"
4) "5"
5) "b"
6) "3"

1.1.2 scard删除成员数量

Redis Scard 命令返回集合中元素的数量。

使用srem可以删除指定的值。

127.0.0.1:6379> srem s1 a 1
(integer) 2

使用scard查看一下现在剩余的成员数量:
image-20221104231155075

之前存储了6个,删除了俩个,现在只剩下了4个。

1.1.3 smove移动成员

Redis Smove命令将指定的成员元素从源集合移动到目标集合。SMOVE是原子操作。如果源集合不存在或不包含指定的成员元素,则SMOVE命令不执行任何操作,只返回0。否则,将从源集合中删除成员元素并将其添加到目标集合中。当目标集已经包含成员元素时,SMOVE命令只需从源集中删除成员元素。当源或目标不是集合类型时,将返回错误。

使用smove语句将s1里的2移动到s2里面。

127.0.0.1:6379> smove s1 s2 2
(integer) 1

1.1.4 sinterstore 存储俩个集合的交集

Redis Sinterstore 命令将给定集合之间的交集存储在指定的集合中。如果指定的集合已经存在,则将其覆盖。

先使用sadd将s1里面添加5个成员: 0 9 8 7 6

给s2添加5个成员:0 9 4 6 3

我们可以看出,s1和s2的交集是0 9 6 3 :3是因为s1原来里面含有3。

127.0.0.1:6379> sadd s1 0 9 8 7 6
(integer) 5
127.0.0.1:6379> sadd s2 0 9 4 6 3
(integer) 5

我们使用 sinterstore 存储俩个集合的交集:

127.0.0.1:6379> sinterstore s3 s1 s2
(integer) 4

我们使用smembers,显示s3里面的成员值:

127.0.0.1:6379> smembers s3
1) "0"
2) "3"
3) "6"
4) "9"

二.Redis中的有序集合(ZSet)

Zset是Redis提供的最独特的数据类型之一。首先,它是一个集合,这确保了内部值的唯一性。其次,它为每个值添加一个分数属性,通过对分数进行排序来实现排序。例如,zset结构用于存储学生的分数。值表示学生的ID,分数是测试分数。我们可以根据分数对成绩进行排序,以获得学生的排名。

image-20221105115812768

image-20221104232928128

image-20221105114314235

image-20221105115027370

2.1 基本的一些操作

2.1.1 zadd添加1到多个成员

Redis Zadd命令用于将一个或多个成员元素及其分数添加到有序集。
如果成员已经是有序集的成员,请更新该成员的分数值,然后重新插入成员元素以确保该成员处于正确的位置。
小数可以是整数值或双精度浮点数。
如果有序集密钥不存在,请创建一个空的有序集并执行ZADD操作。
如果键存在但不是有序集类型,则返回错误。

注意:在Redis 2.4之前,ZADD一次只能添加一个元素。

我们增加一个z1给其赋值:ff为100分,aa为90分,nn为110分以此为例。

image-20221105114451955

2.1.2 zcount 返回指定分数区间的成员数量

Redis Zcount 命令用于计算有序集合中指定分数区间的成员数量。

127.0.0.1:6379> zcount z1 -inf (110
(integer) 3

2.1.3 zcard 返回指定成员数量

Redis Zcard 命令用于计算集合中元素的数量。

127.0.0.1:6379> zcard z1
(integer) 4

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...