Redis笔记5:数据类型之集合(Set)
2017-03-02 00:07
555 查看
命令 描述 语法 SADD 添加值 SADD key member [member ...] SMEMBERS 遍历集合 SMEMBERS key SCARD 获取key的成员数量 SCARD key SISMEMBER 判断成员是否存在 SISMEMBER key member Spop 随机删除元素 Spop key SREM 删除指定的成员 SREM key member [member ...] SRANDMEMBER 随机返回成员,不删除原值 SRANDMEMBER key SMOVE 移动一个集合的成员到另一个集合 SMOVE source destination member SDIFF 求集合差集 SDIFF key [key ...] SDIFFSTORE 集合中的差集存储到新集合中 SDIFFSTORE destination key [key ...] SINTER 求集合交集 SINTER key [key ...] SINTERSTORE 将集合交集存储到新集合 SINTERSTORE destination key [key ...] SUNION 求集合并集 SUNION key [key ...] SUNIONSTORE 将集合的并集存储到新集合 SUNIONSTORE destination key [key ...]
1、SADD key member [member …]
将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略。假如 key 不存在,则创建一个只包含 member 元素作成员的集合。当 key 不是集合类型时,返回一个错误。返回值: 被添加到集合中的新元素的数量,不包括被忽略的元素。
示例:
127.0.0.1:6379[15]> SADD bbs "discuz.net" # 添加单个元素 (integer) 1 127.0.0.1:6379[15]> SADD bbs "discuz.net" # 添加重复元素 (integer) 0 127.0.0.1:6379[15]> SADD bbs "tianya.cn" "groups.google.com" # 添加多个元素 (integer) 2 127.0.0.1:6379[15]> SMEMBERS bbs 1) "tianya.cn" 2) "groups.google.com" 3) "discuz.net"
2、SMEMBERS key
返回集合 key 中的所有成员。不存在的 key 被视为空集合。返回值: 集合中的所有成员。
示例:
127.0.0.1:6379[15]> EXISTS not_exists_key (integer) 0 127.0.0.1:6379[15]> SMEMBERS not_exists_key (empty list or set) 127.0.0.1:6379[15]> SADD language c++ .net java (integer) 3 127.0.0.1:6379[15]> SMEMBERS language 1) "java" 2) ".net" 3) "c++"
3、SCARD key
返回集合中元素的数量。返回值: 集合的元素数量。当 key 不存在时,返回 0 。
示例:
127.0.0.1:6379[15]> SADD language c++ .net java (integer) 3 127.0.0.1:6379> SCARD language (integer) 3
4、SISMEMBER key member
判断 member 元素是否集合 key 的成员。返回值: 如果 member 元素是集合的成员,返回 1 。 如果 member 元素不是集合的成员,或 key 不存在,返回 0 。
示例:
127.0.0.1:6379[15]> SADD "joe's_movies" "hi,lady" "fast five" "2012" (integer) 3 127.0.0.1:6379[15]> SMEMBERS "joe's_movies" 1) "fast five" 2) "hi,lady" 3) "2012" 127.0.0.1:6379[15]> SISMEMBER "joe's_movies" 2012 (integer) 1
5、SPOP key
移除并返回集合中的一个随机元素。 如果只想获取一个随机元素,但不想该元素从集合中被移除的话,可以使用SRANDMEMBER 命令。返回值: 被移除的随机元素。 当 key 不存在或 key 是空集时,返回 nil 。
示例:
127.0.0.1:6379[15]> SADD mydb MySql MongoDB Redis (integer) 3 127.0.0.1:6379[15]> SPOP mydb "Redis" 127.0.0.1:6379[15]> SMEMBERS mydb 1) "MySql" 2) "MongoDB" 127.0.0.1:6379[15]> SPOP mydb "MySql" 127.0.0.1:6379[15]> SMEMBERS mydb 1) "MongoDB"
6、SREM key member [member …]
移除集合 key 中的一个或多个 member 元素,不存在的 member 元素会被忽略。 当 key 不是集合类型,返回一个错误。返回值: 被成功移除的元素的数量,不包括被忽略的元素。
示例:
127.0.0.1:6379[15]> SADD languages c lisp python ruby (integer) 4 127.0.0.1:6379[15]> SMEMBERS languages 1) "python" 2) "lisp" 3) "c" 4) "ruby" 127.0.0.1:6379[15]> SREM languages ruby # 移除单个元素 (integer) 1 127.0.0.1:6379[15]> SREM languages non-exists-language #移除不存在的元素 (integer) 0 127.0.0.1:6379[15]> SREM languages lisp python c # 移除多个元素 (integer) 3 127.0.0.1:6379[15]> SMEMBERS languages (empty list or set)
7、SRANDMEMBER key [count]
返回集合中的一个随机元素。如果 count 为正数,且小于集合基数,那么命令返回一个包含 count 个元素的数组,数组中的元素各不相同。如果 count 大于等于集合基数,那么返回整个集合。 如果 count 为负数,那么命令返回一个数组,数组中的元素可能会重复出现多次,而数组的长度为count 的绝对值。返回值: 只提供 key 参数时,返回一个元素;如果集合为空,返回 nil 。 如果提供了 count 参数,那么返回一个数组;如果集合为空,返回空数组。
示例:
127.0.0.1:6379> SADD fruit apple banana cherry (integer) 3 127.0.0.1:6379> SRANDMEMBER fruit "banana" 127.0.0.1:6379> SRANDMEMBER fruit 2 1) "cherry" 2) "apple" 127.0.0.1:6379> SRANDMEMBER fruit 10 1) "banana" 2) "cherry" 3) "apple" 127.0.0.1:6379> SRANDMEMBER fruit 0 (empty list or set) 127.0.0.1:6379> SRANDMEMBER fruit -1 1) "apple"
8、SMOVE source destination member
将 member 元素从 source 集合移动到 destination 集合。如果 source 集合不存在或不包含指定的 member 元素,则SMOVE 命令不执行任何操作,仅返回 0 。否则, member 元素从 source 集合中被移除,并添加到 destination 集合中去。 当 destination 集合已经包含 member 元素时,SMOVE 命令只是简单地将 source 集合中的 member 元素删除。 当 source 或 destination 不是集合类型时,返回一个错误。返回值: 如果 member 元素被成功移除,返回 1 。 如果 member 元素不是 source 集合的成员,并且没有任何操作对 destination 集合执行,那么返回。
示例:
127.0.0.1:6379> SADD myset1 a b c d (integer) 4 127.0.0.1:6379> SADD myset2 b (integer) 1 127.0.0.1:6379> SMOVE myset1 myset2 a #移动a,myset2中不存在的元素 (integer) 1 127.0.0.1:6379> SMEMBERS myset1 1) "b" 2) "c" 3) "d" 127.0.0.1:6379> SMEMBERS myset2 1) "b" 2) "a"
127.0.0.1:6379> flushdb OK 127.0.0.1:6379> SADD myset1 a b c d (integer) 4 127.0.0.1:6379> SADD myset2 b (integer) 1 127.0.0.1:6379> SMOVE myset1 myset2 b #移动b,myset2中已经有了的元素 (integer) 1 127.0.0.1:6379> SMEMBERS myset1 1) "c" 2) "d" 3) "a" 127.0.0.1:6379> SMEMBERS myset2 1) "b"
9、SDIFF key [key …]
返回给定集合之间的差集。不存在的集合 key 将视为空集。返回值: 包含差集成员的列表。
示例:
127.0.0.1:6379[15]> SADD myset1 a b c (integer) 3 127.0.0.1:6379[15]> SADD myset2 c d e (integer) 3 127.0.0.1:6379[15]> SDIFF myset1 myset2 1) "c"
10、SDIFFSTORE destination key [key …]
将给定集合之间的差集存储在指定的集合中。如果指定的集合 key 已存在,则会被覆盖。返回值: 结果集中的元素数量。
示例:
redis 127.0.0.1:6379> SADD myset1 "hello" "foo" "bar" (integer) 3 redis 127.0.0.1:6379> SADD myset2 "hello" "world" (integer) 2 redis 127.0.0.1:6379> SDIFFSTORE destset myset1 myset2 (integer) 2 redis 127.0.0.1:6379> SMEMBERS destset 1) "foo" 2) "bar"
11、SINTER key [key …]
返回给定所有给定集合的交集。 不存在的集合 key 被视为空集。 当给定集合当中有一个空集时,结果也为空集(根据集合运算定律)。返回值: 交集成员的列表。
示例:
redis 127.0.0.1:6379> SADD myset1 "hello" "foo" "bar" (integer) 3 redis 127.0.0.1:6379> SADD myset2 "hello" "world" (integer) 2 redis 127.0.0.1:6379> SINTER myset myset2 1) "hello"
12、SINTERSTORE DESTINATION_KEY KEY KEY1..KEYN
将给定集合之间的交集存储在指定的集合中。如果指定的集合已经存在,则将其覆盖。返回值: 交集成员的列表。
示例:
redis 127.0.0.1:6379> SADD myset1 "hello" "foo" "bar" (integer) 3 redis 127.0.0.1:6379> SADD myset2 "hello" "world" (integer) 2 redis 127.0.0.1:6379> SINTERSTORE myset myset1 myset2 (integer) 1 redis 127.0.0.1:6379> SMEMBERS myset 1) "hello"
13、SUNION KEY KEY1..KEYN
返回给定集合的并集。不存在的集合 key 被视为空集。返回值: 并集成员的列表。
示例:
redis 127.0.0.1:6379> SADD myset1 "hello" "foo" "bar" (integer) 3 redis 127.0.0.1:6379> SADD myset2 "hello" "world" (integer) 2 redis 127.0.0.1:6379> SUNION myset1 myset2 1) "bar" 2) "world" 3) "hello" 4) "foo"
14、SUNIONSTORE DESTINATION KEY KEY1..KEYN
将给定集合的并集存储在指定的集合 destination 中。返回值: 结果集中的元素数量。
示例:
redis 127.0.0.1:6379> SADD myset1 "hello" "foo" "bar" (integer) 3 redis 127.0.0.1:6379> SADD myset2 "hello" "world" (integer) 2 redis 127.0.0.1:6379> SUNIONSTORE myset myset1 myset2 (integer) 1 redis 127.0.0.1:6379> SMEMBERS myset 1) "bar" 2) "world" 3) "hello" 4) "foo"
(完毕!)
参考: http://blog.csdn.net/thinkercode/article/details/46575413
相关文章推荐
- Redis笔记7:数据类型之有序集合(sorted set)
- Redis和nosql简介,api调用;Redis数据功能(String类型的数据处理);List数据结构(及Java调用处理);Hash数据结构;Set数据结构功能;sortedSet(有序集合)数
- Redis数据类型与指令详解之集合(t_set)
- Redis学习笔记之六:集合类型Set
- Redis数据类型--Set(集合)
- Redis基础之数据类型(Set无序集合)
- Redis_集合(set)数据类型
- NoSQL之Redis对set(集合)数据类型的操作之二
- Redis数据类型--SortedSet(有序集合)
- Redis和nosql简介,api调用;Redis数据功能(String类型的数据处理);List数据结构(及Java调用处理);Hash数据结构;Set数据结构功能;sortedSet(有序集合)数
- Redis五大数据类型之无序集合set
- NoSQL之Redis对set(集合)数据类型的操作之一
- Redis学习笔记---数据类型二(set、sortedset)
- Redis学习手册(Set数据类型)
- hibernate中一对多映射(set集合中存放的原生数据类型,而不是实体)
- Redis Set类型数据常用命令参考
- 二 redis学习笔记之数据类型
- redis学习笔记(二)---集合类型
- [Python]集合数据类型笔记
- Redis学习手册(Set数据类型)