Redis 的 SDIFFSTORE 命令的作用和 SDIFF 类似,但它将结果保存到 destination 集合,而不是简单地返回结果集。
如果 destination 集合已经存在,则将其覆盖。destination 可以是 KEY 本身。
192.168.98.70:6379> SDIFFSTORE destination KEY [KEY ...]
参数 | 描述 |
---|---|
destination | 返回的差集结果保存的集合。 |
KEY | 要返回差集的集合的键。 |
结果集中的元素数量。
O(N), N 是所有给定集合的成员数量之和。
>= 1.0.0
destination 不存在,差集被保存到 destination
192.168.98.70:6379> SADD haicoder Redis Mongo Mysql (integer) 3 192.168.98.70:6379> SADD hicoder SqlServer SQL Mongo (integer) 3 192.168.98.70:6379> SCARD coder (integer) 0 192.168.98.70:6379> SDIFFSTORE coder haicoder hicoder (integer) 2 192.168.98.70:6379> SMEMBERS coder 1) "Redis" 2) "Mysql" 192.168.98.70:6379> DEL haicoder hicoder coder (integer) 3
我们首先,使用 SADD 命令,向键为 haicoder 的集合插入元素 Redis、Mongo 和 Mysql。使用 SADD 命令,向键为 hicoder 的集合插入元素 SqlServer、SQL 和 Mongo。
接着,我们使用 SCARD 命令,获取键为 coder 的集合的元素个数,返回 0,即集合不存在。使用 SDIFFSTORE 命令,将键为 haicoder 的集合与键为 hicoder 的集合的元素的差集,保存在集合 coder 中。
最后,我们使用 SMEMBERS 获取键为 coder 的集合的所有元素,返回了集合 haicoder 与集合 hicoder 的差集。
destination 存在,destination 被清空后保存差集元素
192.168.98.70:6379> SADD haicoder Redis Mongo Mysql (integer) 3 192.168.98.70:6379> SADD hicoder SqlServer SQL Mongo (integer) 3 192.168.98.70:6379> SADD coder coder (integer) 1 192.168.98.70:6379> SDIFFSTORE coder haicoder hicoder (integer) 2 192.168.98.70:6379> SMEMBERS coder 1) "Redis" 2) "Mysql" 192.168.98.70:6379> DEL haicoder hicoder coder (integer) 3
我们首先,使用 SADD 命令,向键为 haicoder 的集合插入元素 Redis、Mongo 和 Mysql。使用 SADD 命令,向键为 hicoder 的集合插入元素 SqlServer、SQL 和 Mongo。
接着,我们使用 SADD 命令,向键为 coder 的集合插入元素 coder。使用 SDIFFSTORE 命令,将键为 haicoder 的集合与键为 hicoder 的集合的元素的差集,保存在集合 coder 中。
最后,我们使用 SMEMBERS 获取键为 coder 的集合的所有元素,返回了集合 haicoder 与 集合 hicoder 的差集,同时原来 coder 集合中的元素已经不存在。
destination 为非集合类型,destination 被清空后保存差集元素
192.168.98.70:6379> SADD haicoder Redis Mongo Mysql (integer) 3 192.168.98.70:6379> SADD hicoder SqlServer SQL Mongo (integer) 3 192.168.98.70:6379> LPUSH coder SQL (integer) 1 192.168.98.70:6379> SDIFFSTORE coder haicoder hicoder (integer) 2 192.168.98.70:6379> SMEMBERS coder 1) "Redis" 2) "Mysql" 192.168.98.70:6379> DEL haicoder hicoder coder (integer) 3
我们首先,使用 SADD 命令,向键为 haicoder 的集合插入元素 Redis、Mongo 和 Mysql。使用 SADD 命令,向键为 hicoder 的集合插入元素 SqlServer、SQL 和 Mongo。
接着,我们使用 LPUSH 命令,向键为 coder 的列表中插入元素 SQL。
使用 SDIFFSTORE 命令,将键为 haicoder 的集合与键为 hicoder 的集合的元素的差集,保存在列表元素 coder 中,此时 coder 为列表类型,所以列表被清空,重新保存了差集元素。
最后,使用 SMEMBERS 获取键为 coder 的集合的所有元素,返回了集合 haicoder 与 集合 hicoder 的差集。
Redis 的 SDIFFSTORE 命令的作用和 SDIFF 类似,但它将结果保存到 destination 集合,而不是简单地返回结果集。Redis SDIFFSTORE 命令语法:
192.168.98.70:6379> SDIFFSTORE destination KEY [KEY ...]