Redis 集合(Set)
Redis 的Set是String的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
Reids中的集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
sadd key member1 [member2]
描述:将一个或多个成员元素加入到集合中,已经存在于集合的成员元素将被忽略。假如集合的key不存在,则创建一个只包含添加元素成员的集合
返回值:被添加到集合中的新元素的数量,不包括被忽略的元素
127.0.0.1:6379> sadd myset hello world
(integer) 2
127.0.0.1:6379> sadd myset hello
(integer) 0
127.0.0.1:6379> sadd myset you
(integer) 1
127.0.0.1:6379> smembers myset
1) "world"
2) "hello"
3) "you"
scard key
描述:获取集合中元素的数量
返回值:集合的数量,当集合key不存在时,返回0
127.0.0.1:6379> sadd myset hello
(integer) 1
127.0.0.1:6379> sadd myset foo
(integer) 1
127.0.0.1:6379> sadd myset hello
(integer) 0
127.0.0.1:6379> scard myset
(integer) 2
sdiff key1 [key2]
描述:返回给定集合的差集,不存在的集合key将视为空集。差集的结果来自前面的first_key,而不是后面的other_key
返回值:包含差集成员的列表
127.0.0.1:6379> sadd key1 a
(integer) 1
127.0.0.1:6379> sadd key1 b
(integer) 1
127.0.0.1:6379> sadd key1 c
(integer) 1
127.0.0.1:6379> sadd key2 c
(integer) 1
127.0.0.1:6379> sadd key2 d
(integer) 1
127.0.0.1:6379> sadd key2 e
(integer) 1
127.0.0.1:6379> sdiff key1 key2
1) "a"
2) "b"
sinter key1 [key2]
描述:返回所有给定集合的交集。不存在的集合key设置为空集。当给定的集合中有一个空集时,结果也为空集
返回值:交集成员列表
127.0.0.1:6379> sadd myset hello
(integer) 1
127.0.0.1:6379> sadd myset foo
(integer) 1
127.0.0.1:6379> sadd myset bar
(integer) 1
127.0.0.1:6379> sadd myset1 hello
(integer) 1
127.0.0.1:6379> sadd myset1 world
(integer) 1
127.0.0.1:6379> sinter myset myset1
1) "hello"
sinterstore destination key1 [key2]
描述:将给定集合之间的交集存储在指定集合中。如果指定集合已经存在,则将其覆盖。
返回值:返回存储交集的集合元素数量
127.0.0.1:6379> sadd myset hello
(integer) 1
127.0.0.1:6379> sadd myset foo
(integer) 1
127.0.0.1:6379> sadd myset bar
(integer) 1
127.0.0.1:6379> sadd myset1 hello
(integer) 1
127.0.0.1:6379> sadd myset1 world
(integer) 1
127.0.0.1:6379> sinterstore myset2 myset myset1
(integer) 1
127.0.0.1:6379> smembers myset2
1) "hello"
sismember key member
描述:判断成员元素是否是集合的成员
返回值:如果集合元素是集合的成员,返回1.如果成员元素不是集合的成员,或key不存在,返回0
127.0.0.1:6379> sadd myset hello
(integer) 1
127.0.0.1:6379> sismember myset hello
(integer) 1
127.0.0.1:6379> sismember myset world
(integer) 0
smembers key
描述:返回集合中所有成员,不存在的key设为空集合
返回值:集合中所有成员
127.0.0.1:6379> sadd myset hello
(integer) 1
127.0.0.1:6379> sadd myset world
(integer) 1
127.0.0.1:6379> smembers myset
1) "world"
2) "hello"
**srem key member1 [member2] **
描述:用于移除集合中的一个或多个元素,不存在的成员元素会被忽略,当key不是集合类型时,返回一个错误
返回值:被成功移除元素的数量
127.0.0.1:6379> sadd myset hello
(integer) 1
127.0.0.1:6379> sadd myset foo
(integer) 1
127.0.0.1:6379> sadd myset bar
(integer) 1
127.0.0.1:6379> srem myset hello
(integer) 1
127.0.0.1:6379> srem myset bar
(integer) 1
127.0.0.1:6379> smembers myset
1) "foo"
sunion key1 [key2]
描述:返回给定集合的并集,不存在的集合key被视为空集
返回值:并集集合列表
127.0.0.1:6379> sadd key1 a
(integer) 1
127.0.0.1:6379> sadd key1 b
(integer) 1
127.0.0.1:6379> sadd key1 c
(integer) 1
127.0.0.1:6379> sadd key2 c
(integer) 1
127.0.0.1:6379> sadd key2 d
(integer) 1
127.0.0.1:6379> sadd key2 e
(integer) 1
127.0.0.1:6379> sunion key1 key2
1) "b"
2) "d"
3) "c"
4) "a"
5) "e"