redis数据类型之set常用操作

Redis的Set是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
Redis 中 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。

SADD key member1 [member2]  向集合添加一个或多个成员
redis 127.0.0.1:6379> sadd ids a1
(integer) 1
redis 127.0.0.1:6379> sadd ids a2
(integer) 1
redis 127.0.0.1:6379> sadd ids a3
(integer) 1
redis 127.0.0.1:6379> sadd ids a4
(integer) 1

scard获取成员个数
redis 127.0.0.1:6379> scard ids              //在上面我们添加了4个成员
(integer) 4

sdiff 返回给定集合的差集
redis 127.0.0.1:6379> sadd userIds a1
(integer) 1
redis 127.0.0.1:6379> sadd userIds a2
(integer) 1
redis 127.0.0.1:6379> sadd userIds dxc
(integer) 1
redis 127.0.0.1:6379> sadd userIds dac
(integer) 1
redis 127.0.0.1:6379> sdiff ids userIds    //注:ids和userId两个集合的差集(ids中有userIds中没有的成员们)
1) "a3"
2) "a4"

sdiffstore 把ids userIds集合的差集存贮到集合theIds 结合中
redis 127.0.0.1:6379> sdiffstore theIds ids userIds
(integer) 2
redis 127.0.0.1:6379> smembers theIds         //smembers 返回所有成员
1) "a3"
2) "a4"

sinter 求交集
redis 127.0.0.1:6379> sinter ids userIds
1) "a2"
2) "a1"

sinterstore  求ids和userIds的交集并存贮到集合theSameIds
redis 127.0.0.1:6379> sinterstore theSameIds ids userIds
(integer) 2
redis 127.0.0.1:6379> smembers theSameIds
1) "a2"
2) "a1"

sismember 判断某个元素是否为某个集合的成员
  redis 127.0.0.1:6379> sismember ids a1              //判断a1是否为集合ids的成员 是返回1 不是返回0
(integer) 1
  redis 127.0.0.1:6379> sismember ids a1cc
(integer) 0

smove source destination member
将member元素从source 集合移动到 destination 集合


spop key 移除并返回集合中的一个随机元素
redis 127.0.0.1:6379> spop ids
"a3"


求并集
redis 127.0.0.1:6379> sadd region1 xian
(integer) 1
redis 127.0.0.1:6379> sadd region1 changsha
(integer) 1
redis 127.0.0.1:6379> sadd region1 bejing
(integer) 1
redis 127.0.0.1:6379> sadd region2 bejing
(integer) 1
redis 127.0.0.1:6379> sadd region2 guangzhou
(integer) 1
redis 127.0.0.1:6379> sadd region2 shengzheng
(integer) 1
例如:求region1 和region2 的并集
redis 127.0.0.1:6379> sunion region1 region2
1) "bejing"
2) "guangzhou"
3) "xian"
4) "shengzheng"
5) "changsha"
例如:求region1 和region2 的并集并 存贮在 region集合中
redis 127.0.0.1:6379> sunionstore region region1 region2
(integer) 5
redis 127.0.0.1:6379> smembers region
1) "bejing"
2) "guangzhou"
3) "xian"
4) "shengzheng"
5) "changsha"
 
Redis Sscan 命令用于迭代集合键中的元素。

redis 127.0.0.1:6379> SADD myset1 "hello"
(integer) 1
redis 127.0.0.1:6379> SADD myset1 "hi"
(integer) 1
redis 127.0.0.1:6379> SADD myset1 "bar"
(integer) 1
redis 127.0.0.1:6379> sscan myset1 0 match h*
1) "0"
2) 1) "hello"
   2) "h1"

猜你喜欢

转载自zhaoxiaoboblogs.iteye.com/blog/2310039