Redis基础命令之set、zset

1.Set

Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。

1.1  SADD --添加一个或多个成员

这里添加三个成员到set集合中

127.0.0.1:6379> SADD set mysql java c++
(integer) 3

1.2  SMEMBERS--查看成员 

127.0.0.1:6379> SMEMBERS set
1) "c++"
2) "java"
3) "mysql"

1.3 SISMEMBER key member--查看成员是否存在

存在即返回1,不存在返回0

127.0.0.1:6379> SISMEMBER set java
(integer) 1
127.0.0.1:6379> SISMEMBER set c
(integer) 0 

1.4  SCARD key--查看成员个数

127.0.0.1:6379> SCARD set
(integer) 3

1.5  SPOP key --随机弹出一个成员

移除并返回集合中的一个随机元素

127.0.0.1:6379> SPOP set
"java"
127.0.0.1:6379> SMEMBERS set
1) "c++"
2) "mysql"

弹出了java成员

1.6  SREM key member1 [member2]--移除成员

和SPOP不同的是,可以一个移除多个,且不会返回成员

127.0.0.1:6379> SREM set mysql c++
(integer) 2
127.0.0.1:6379> SMEMBERS set
(empty array)

移除这两个后,变为空集合了

1.7  SRANDMEMBER key [count]

返回集合中一个或多个随机数

127.0.0.1:6379> SADD set mysql java c c++
(integer) 4
127.0.0.1:6379> SRANDMEMBER set 2
1) "c++"
2) "c"

1.8交集/并集/差集

        1.8.1 SINTER key1 [key2]--返回给定所有集合的交集

        我们在这里先再新建set1和set2

 127.0.0.1:6379> sadd set1 java c++ redis
(integer) 3
127.0.0.1:6379> sadd set2 redis c python
(integer) 3

        set和set1,以及set和set2的交集

127.0.0.1:6379> SINTER set set1
1) "c++"
2) "java"
127.0.0.1:6379> SINTER set set2
1) "c"

        1.8.2 SINTERSTORE destination key1 [key2]

        返回给定所有集合的交集并存储在 destination 中

 127.0.0.1:6379> SINTERSTORE des1 set set1
(integer) 2
127.0.0.1:6379> SMEMBERS des1
1) "c++"
2) "java"

        1.8.3 SDIFF key1 [key2]--返回第一个集合与其他集合之间的差异

127.0.0.1:6379> SDIFF set set1
1) "c"
2) "mysql"
127.0.0.1:6379> SDIFF set set2
1) "c++"
2) "mysql"
3) "java"        

        注意它这个差异就是除去共同的,两个独自有的全部都会算

        1.8.4  SDIFFSTORE destination key1 [key2]

         返回给定所有集合的差集并存储在 destination 中

127.0.0.1:6379> SDIFFSTORE des2 set set2
(integer) 3
127.0.0.1:6379> SMEMBERS des2
1) "c++"
2) "java"
3) "mysql"

        1.8.5 SUNION key1 [key2] --返回所有给定集合的并集

127.0.0.1:6379> SUNION set set1
1) "java"
2) "mysql"
3) "c++"
4) "redis"
5) "c"

        1.8.6 SUNIONSTORE destination key1 [key2]

         所有给定集合的并集存储在 destination 集合中

127.0.0.1:6379> SUNIONSTORE des3 set set2
(integer) 6
127.0.0.1:6379> SMEMBERS des3
1) "java"
2) "mysql"
3) "c++"
4) "python"
5) "redis"
6) "c"

1.9  SMOVE source destination member--移动成员到另一个

127.0.0.1:6379> SMEMBERS set
1) "c++"
2) "c"
3) "mysql"
4) "java"
127.0.0.1:6379> SMEMBERS set2
1) "python"
2) "redis"
3) "c"
127.0.0.1:6379> SMOVE set set2 c++
(integer) 1
127.0.0.1:6379> SMEMBERS set
1) "c"
2) "mysql"
3) "java"
127.0.0.1:6379> SMEMBERS set2
1) "c++"
2) "python"
3) "redis"
4) "c"

2.ZSet

Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。

有序集合的成员是唯一的,但分数(score)却可以重复。

2.1 ZADD --添加

注意后面要带一个score的参数

127.0.0.1:6379> ZADD zset1 99 zhang3 88 li4
(integer) 2
127.0.0.1:6379> zadd zset1 90 wang5
(integer) 1

2.2 ZRANGE key start stop

通过索引区间返回有序集合指定区间内的成员

0到-1即所有的

127.0.0.1:6379> ZRANGE zset1 0 -1
1) "li4"
2) "wang5"
3) "zhang3"

2.3  ZRANGEBYSCORE key min max 

通过分数返回有序集合指定区间内的成员

127.0.0.1:6379> ZRANGEBYSCORE zset1 90 100
1) "wang5"
2) "zhang3"

由于li4是88,不在90-100区间内不显示

2.4 ZRANK key member--返回索引

127.0.0.1:6379> ZRANK zset1 li4
(integer) 0
127.0.0.1:6379> ZRANK zset1 wang5
(integer) 1
127.0.0.1:6379> ZRANK zset1 zhang3
(integer) 2

2.5 ZCARD key--获取有序集合的成员数

127.0.0.1:6379> ZCARD zset1
(integer) 3

2.6 ZCOUNT key min max--计算在有序集合中指定区间分数的成员数

127.0.0.1:6379> ZCOUNT zset1 90 100
(integer) 2

2.7 ZSCORE key member--查看分数

127.0.0.1:6379> ZSCORE zset1 li4
"88" 

2.8 ZINCRBY key increment member--增加分数

有序集合中对指定成员的分数加上增量 increment

127.0.0.1:6379> ZINCRBY zset1 5 li4
"93"

2.9  ZREVRANGE key start stop 

返回有序集中指定区间内的成员,通过索引,分数从高到低

127.0.0.1:6379> ZREVRANGE zset1 0 -1
1) "zhang3"
2) "li4"
3) "wang5"

zhang3是95,li4是93,wang5是90

2.10 ZREVRANGEBYSCORE key max min 

返回有序集中指定分数区间内的成员,分数从高到低排序

注意这里是max在前,min在后,若写成80 100则会为空

127.0.0.1:6379> ZREVRANGEBYSCORE zset1 100 80
1) "zhang3"
2) "wang5"
3) "li4"

2.11 ZREMRANGEBYSCORE key min max

把91到100区间的成员删除了

127.0.0.1:6379> ZREMRANGEBYSCORE zset1 91 100
(integer) 2
127.0.0.1:6379> ZSCORE zset1 li4
(nil)
127.0.0.1:6379> ZSCORE zset1 zhang3
(nil)
127.0.0.1:6379> ZSCORE zset1 wang5
"90"

2.12 ZREVRANK key member

返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序

127.0.0.1:6379> ZREVRANK zset1 wang5
(integer) 0
127.0.0.1:6379> zadd zset1 99 zhang3 88 li4
(integer) 2
127.0.0.1:6379> ZREVRANK zset1 wang5
(integer) 1

开始为0则是最高的,后面加了两个成员后,则排第2(下标为1)

你可能感兴趣的:(redis,数据库,缓存)