Set类型
Redis的Set类型是String类型的无序不重复集合,底层是一个值为null的哈希表,添加、删除、查找时间复杂度都是O(1)。如果你希望某个键值对存储多个元素,又不希望出现重复元素时,Set类型是一个很好的选择。
常用命令
sadd:向一个集合中添加一个或者多个元素
127.0.0.1:6379> sadd user:id "1001" "1002" "1003"
(integer) 3
smembers:获取集合中所有成员
127.0.0.1:6379> smembers user:id
1) "1001"
2) "1002"
3) "1003"
sismemeber:判断指定元素是否是集合中的成员
127.0.0.1:6379> sismember user:id "1003"
(integer) 1 # 是集合中的成员
127.0.0.1:6379> sismember user:id "1004"
(integer) 0 # 不是集合中的成员
scard:获取集合中元素的个数
127.0.0.1:6379> scard user:id
(integer) 3
srem:移除集合中的一个或者多个元素
127.0.0.1:6379> smembers user:id
1) "1001"
2) "1002"
3) "1003"
127.0.0.1:6379> srem user:id "1001" "1002"
(integer) 2
127.0.0.1:6379> smembers user:id
1) "1003"
smove:将某个元素从一个集合移动到另一个集合
127.0.0.1:6379> smembers user
1) "lucy"
2) "rose"
3) "jack"
127.0.0.1:6379> smove user admin "lucy"
(integer) 1
127.0.0.1:6379> smembers user
1) "rose"
2) "jack"
127.0.0.1:6379> smembers admin
1) "lucy"
sinter:获取多个集合的交集
127.0.0.1:6379> smembers user:id:2022:05:06
1) "1001"
2) "1002"
3) "1003"
127.0.0.1:6379> smembers user:id:2022:05:07
1) "1002"
2) "1003"
3) "1004"
127.0.0.1:6379> sinter user:id:2022:05:06 user:id:2022:05:07
1) "1002"
2) "1003"
sinterstore:将多个集合的交集放到另一个集合中
127.0.0.1:6379> sinterstore user:id:2022:05:06&07 user:id:2022:05:06 user:id:2022:05:07
(integer) 2
127.0.0.1:6379> smembers user:id:2022:05:06&07
1) "1002"
2) "1003"