集合(Set)和有序集合(ZSet)的基本利用方法详解【Redis】

打印 上一主题 下一主题

主题 866|帖子 866|积分 2598

一. Redis中的集合(Set)

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



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

Redis Smembers 下令返回集合中的所有的成员。 不存在的集合 key 被视为空集合。
先添加多个成员:
  1. 127.0.0.1:6379> sadd s1 a 1 a b 2 3 5
  2. (integer) 6
复制代码
利用smembers下令查看,可以看出来是乱序的。
  1. 127.0.0.1:6379> smembers s1
  2. 1) "2"
  3. 2) "a"
  4. 3) "1"
  5. 4) "5"
  6. 5) "b"
  7. 6) "3"
复制代码
1.1.2 scard删除成员数量

Redis Scard 下令返回集合中元素的数量。
利用srem可以删除指定的值。
  1. 127.0.0.1:6379> srem s1 a 1
  2. (integer) 2
复制代码
利用scard查看一下现在剩余的成员数量:

之前存储了6个,删除了俩个,现在只剩下了4个。
1.1.3 smove移动成员

Redis Smove下令将指定的成员元素从源集合移动到目标集合。SMOVE是原子操纵。如果源集合不存在或不包含指定的成员元素,则SMOVE下令不执行任何操纵,只返回0。否则,将从源集合中删除成员元素并将其添加到目标集合中。当目标集已经包含成员元素时,SMOVE下令只需从源集中删除成员元素。当源或目标不是集合类型时,将返回错误。
利用smove语句将s1里的2移动到s2里面。
  1. 127.0.0.1:6379> smove s1 s2 2
  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。
  1. 127.0.0.1:6379> sadd s1 0 9 8 7 6
  2. (integer) 5
  3. 127.0.0.1:6379> sadd s2 0 9 4 6 3
  4. (integer) 5
复制代码
我们利用 sinterstore 存储俩个集合的交集:
  1. 127.0.0.1:6379> sinterstore s3 s1 s2
  2. (integer) 4
复制代码
我们利用smembers,显示s3里面的成员值:
  1. 127.0.0.1:6379> smembers s3
  2. 1) "0"
  3. 2) "3"
  4. 3) "6"
  5. 4) "9"
复制代码
二.Redis中的有序集合(ZSet)

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




2.1 基本的一些操纵

2.1.1 zadd添加1到多个成员

Redis Zadd下令用于将一个或多个成员元素及其分数添加到有序集。
如果成员已经是有序集的成员,请更新该成员的分数值,然后重新插入成员元素以确保该成员处于正确的位置。
小数可以是整数值或双精度浮点数。
如果有序集密钥不存在,请创建一个空的有序集并执行ZADD操纵。
如果键存在但不是有序集类型,则返回错误。
   注意:在Redis 2.4之前,ZADD一次只能添加一个元素。
  我们增长一个z1给其赋值:ff为100分,aa为90分,nn为110分以此为例。

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

Redis Zcount 下令用于计算有序集合中指定分数区间的成员数量。
  1. 127.0.0.1:6379> zcount z1 -inf (110
  2. (integer) 3
复制代码
2.1.3 zcard 返回指定成员数量

Redis Zcard 下令用于计算集合中元素的数量。
  1. 127.0.0.1:6379> zcard z1
  2. (integer) 4
复制代码
总结

本文详细介绍了Redis中的集合(Set)和有序集合(ZSet)两种数据结构的基本概念和常用操纵。

  • Redis中的集合(Set)

    • Set是无序的、成员唯一的集合,实用于需要去重而且不关心元素顺序的场景。
    • 介绍了几个常用下令:smembers(查看集合成员)、scard(返回集合成员数量)、srem(删除指定成员)、smove(移动成员至另一个集合)和sinterstore(存储多个集合的交集到另一个集合)等。
    • 示例操纵展示了怎样管理和操纵集合成员,夸大了Set的无序性以及其成员的唯一性。

  • Redis中的有序集合(ZSet)

    • ZSet是基于分数(score)进行排序的集合,实用于需要排序的场景,如排行榜、优先级队列等。
    • 介绍了zadd(添加成员及其分数)、zcount(返回指定分数区间内的成员数量)和zcard(返回集合成员数量)等常用下令。
    • 示例操纵展示了怎样根据分数对元素进行排序,并利用分数区间查询成员数量。

通过本文,读者可以对Redis中的Set和ZSet有一个清晰的理解,把握其常见下令的利用方法,并能够在实际项目中有效地利用这两种数据结构。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

天空闲话

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表