redis集合操作

无序集合

SADD:将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略。

127.0.0.1:6379> sadd key leo1 leo2
(integer) 2
SCARD:返回集合  key 的基数(集合中元素的数量)。
127.0.0.1:6379> scard key
(integer) 2
SMEMBERS:返回集合  key 中的所有成员。不存在的  key 被视为空集合。
127.0.0.1:6379> smembers key
1) "leo2"
2) "leo1"
SDIFF:返回一个集合的全部成员,该集合是所有给定集合之间的差集。
127.0.0.1:6379> sadd key2 leo2 leo3
(integer) 2
127.0.0.1:6379> sdiff key key2
1) "leo1"
127.0.0.1:6379> sdiff key2 key
1) "leo3"
SDIFFSTORE:这个命令的作用和 SDIFF类似,但它将结果保存到 destination 集合,而不是简单地返回结果集。

如果 destination 集合已经存在,则将其覆盖。

127.0.0.1:6379> sdiffstore key3 key2 key
(integer) 1
127.0.0.1:6379> smembers key3
1) "leo3"
SINTER: 返回一个集合的全部成员,该集合是所有给定集合的交集。 不存在的  key  被视为空集。
127.0.0.1:6379> sinter key2 key
1) "leo2"
SINTERSTORE: 这个命令类似于 SINTER 命令,但它将结果保存到  destination  集合,而不是简单地返回结果集。 如果  destination  集合已经存在,则将其覆盖。
127.0.0.1:6379> sinterstore key4 key key2
(integer) 1
127.0.0.1:6379> smembers key4
1) "leo2"
SISMEMBERS:判断  member 元素是否集合  key 的成员。
127.0.0.1:6379> sismember key leo3
(integer) 0
127.0.0.1:6379> sismember key leo2
(integer) 1

SMOVE 元素从 source 集合删除并移动到 destination 集合(原子操作)。

<pre name="code" class="html">127.0.0.1:6379> smove key key5 leo1
(integer) 1
127.0.0.1:6379> smembers key5
1) "leo1"
127.0.0.1:6379> smembers key
1) "leo2"
 
 

SPOP key移除并返回集合中的一个随机元素。如果只想获取一个随机元素,但不想该元素从集合中被移除的话,可以使用 SRANDMEMBER 命令。

127.0.0.1:6379> spop key
"leo2"
127.0.0.1:6379> spop key
(nil)

SREM key member [member ...]移除集合 key 中的一个或多个 member 元素,不存在的 member 元素会被忽略。当 key 不是集合类型,返回一个错误。

127.0.0.1:6379> smembers key2
1) "leo2"
2) "leo3"
127.0.0.1:6379> srem key2 leo2
(integer) 1
127.0.0.1:6379> smembers key2
1) "leo3"

SUNION key [key ...]返回一个集合的全部成员,该集合是所有给定集合的并集。不存在的 key 被视为空集。

127.0.0.1:6379> smembers key2
1) "leo3"
127.0.0.1:6379> smembers key4
1) "leo2"
127.0.0.1:6379> sunion key2 key4
1) "leo2"
2) "leo3"

SUNIONSTORE destination key [key ...]这个命令类似于 SUNION命令,但它将结果保存到 destination 集合,而不是简单地返回结果集。如果 destination 已经存在,则将其覆盖。

127.0.0.1:6379> sunionstore key6 key2 key4
(integer) 2
127.0.0.1:6379> smembers key6
1) "leo2"
2) "leo3"
SSCAN:用于迭代集合键中的元素(设置为0表示开始一次新的迭代,返回0表示迭代结束)
127.0.0.1:6379> sadd scan.key 1 2 3 4 5 6 7 8 9
(integer) 9
127.0.0.1:6379> sscan scan.key 0
1) "0"
2) 1) "1"
   2) "2"
   3) "3"
   4) "4"
   5) "5"
   6) "6"
   7) "7"
   8) "8"
   9) "9"

有序集合

ZADD key score member [[score member] [score member] ...] 将一个或多个 member 元素及其 score 值加入到有序集 key 当中。

127.0.0.1:6379> zadd zset.key 1 m1 2 m2 3 m3 4 m4 5 m5 6 m6 7 m7
(integer) 7

ZCARD key 返回有序列的基数

127.0.0.1:6379> zcard zset.key
(integer) 7

ZCOUNT key min max 返回有序集 key 中, score 值在 min 和 max 之间(默认包括 score 值等于 min 或 max )的成员的数量

127.0.0.1:6379> zcount zset.key 4 6
(integer) 3

ZINCRBY key increment member 为有序集 key 的成员 member 的 score 值加上增量 increment 。increment为负数时则减

127.0.0.1:6379> zincrby zset.key 1 m7
"8"

ZRANGE key start stop [WITHSCORES] 返回有序集 key 中,指定区间内(也就是按索引来排)的成员。其中成员的位置按 score 值递增(从小到大,ZREVRANGE是从大到小排)来排序。

127.0.0.1:6379> zrange zset.key 2 5 withscores
1) "m3"
2) "3"
3) "m4"
4) "4"
5) "m5"
6) "5"
7) "m6"
8) "6"

ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]

返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增(从小到大,ZREVRANGEBYSCORE是从大到小排序)次序排列。

127.0.0.1:6379> zrangebyscore zset.key 5 8
127.0.0.1:6379> zrangebyscore zset.key (4 8
1) "m5"
2) "m6"
3) "m7"
返回整个有序集合
127.0.0.1:6379> zrangebyscore zset.key -inf +inf
1) "m1"
2) "m2"
3) "m3"
4) "m4"
5) "m5"
6) "m6"
7) "m7"
返回小于等于6的
127.0.0.1:6379> zrangebyscore zset.key -inf 6
1) "m1"
2) "m2"
3) "m3"
4) "m4"
5) "m5"
6) "m6"
ZRANK:返回有序集  key 中成员  member 的排名。其中有序集成员按  score 值递增(从小到大,ZREVRANK是从大到小排列)顺序排列。
127.0.0.1:6379> zrank zset.key m5
(integer) 4

ZREM key member [member ...] 移除有序集 key 中的一个或多个成员,不存在的成员将被忽略。

127.0.0.1:6379> zrem zset.key m7
(integer) 1
ZREMRANGEBYRANK:通过索引顺序来移除元素

ZREMRANGEBYSCORE:通过score来移除元素(有序序列为从小到大)

127.0.0.1:6379> zremrangebyrank zset.key 0 2
(integer) 3

ZSCORE key member

返回有序集 key 中,成员 member 的 score 值。

127.0.0.1:6379> zscore zset.key m5
"5"

ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]

计算给定的一个或多个有序集的并集,其中给定 key 的数量必须以 numkeys 参数指定,并将该并集(结果集)储存到 destination 。

默认情况下,结果集中某个成员的 score 值是所有给定集下该成员 score 值之 和 。

WEIGHTS

使用 WEIGHTS 选项,你可以为 每个 给定有序集 分别 指定一个乘法因子(multiplication factor),每个给定有序集的所有成员的score 值在传递给聚合函数(aggregation function)之前都要先乘以该有序集的因子。

如果没有指定 WEIGHTS 选项,乘法因子默认设置为 1 。

AGGREGATE

使用 AGGREGATE 选项,你可以指定并集的结果集的聚合方式。

默认使用的参数 SUM ,可以将所有集合中某个成员的 score 值之 和 作为结果集中该成员的 score 值;使用参数 MIN ,可以将所有集合中某个成员的 最小 score 值作为结果集中该成员的 score 值;而参数 MAX 则是将所有集合中某个成员的 最大 score 值作为结果集中该成员的 score 值。

127.0.0.1:6379> zadd set1 1 a 2 b 3 c
(integer) 3
127.0.0.1:6379> zadd set2 1 c 2 d 3 e
(integer) 3
127.0.0.1:6379> zunionstore set3 2 set1 set2 weights 1 3 aggregate min
(integer) 5
127.0.0.1:6379> zrange set3 0 -1
1) "a"
2) "b"
3) "c"
4) "d"
5) "e"
ZINTERSTORE是求交集,用法参考ZUNIONSTORE

ZSCAN 命令用于迭代有序集合中的元素(包括元素成员和元素分值)。用法参考SSCAN


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值