文章目录
- 一. 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基本的一些操作
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查看一下现在剩余的成员数量:
之前存储了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,分数是测试分数。我们可以根据分数对成绩进行排序,以获得学生的排名。
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 命令用于计算有序集合中指定分数区间的成员数量。
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