set(集合)
无序集合,重点就是去重
和无序
。
(1)添加元素
sadd key member1 member2 ...
向键authors
的集合中添加元素zhangsan
、lisi
、wangwu
sadd authors zhangsan lisi wangwu
(2)获取集合的所有的成员
smembers key
获取键authors
的集合中所有元素
smembers authors
(3)获取集合的长度
scard keys
获取s2集合的长度
sadd s2 a b c d e 127.0.0.1:6379> scard s2 (integer) 5
(4)随机抽取一个或多个元素
抽取出来的成员被删除掉
spop key [count=1] # 注意: # count为可选参数,不填则默认一个。被提取成员会从集合中被删除掉
随机获取s2集合的成员
sadd s2 a c d e 127.0.0.1:6379> spop s2 "d" 127.0.0.1:6379> spop s2 "c"
(5)删除指定元素
srem key value
删除键authors
的集合中元素wangwu
srem authors wangwu
(6)交集、差集和并集
推荐、(协同过滤,基于用户、基于物品)
sinter key1 key2 key3 .... # 交集、比较多个集合中共同存在的成员 sdiff key1 key2 key3 .... # 差集、比较多个集合中不同的成员 sunion key1 key2 key3 .... # 并集、合并所有集合的成员,并去重
del user:1 user:2 user:3 user:4 sadd user:1 1 2 3 4 # user:1 = {1,2,3,4} sadd user:2 1 3 4 5 # user:2 = {1,3,4,5} sadd user:3 1 3 5 6 # user:3 = {1,3,5,6} sadd user:4 2 3 4 # user:4 = {2,3,4} # 交集 127.0.0.1:6379> sinter user:1 user:2 1) "1" 2) "3" 3) "4" 127.0.0.1:6379> sinter user:1 user:3 1) "1" 2) "3" 127.0.0.1:6379> sinter user:1 user:4 1) "2" 2) "3" 3) "4" 127.0.0.1:6379> sinter user:2 user:4 1) "3" 2) "4" # 并集 127.0.0.1:6379> sunion user:1 user:2 user:4 1) "1" 2) "2" 3) "3" 4) "4" 5) "5" # 差集 127.0.0.1:6379> sdiff user:2 user:3 1) "4" # 此时可以给user:3推荐4 127.0.0.1:6379> sdiff user:3 user:2 1) "6" # 此时可以给user:2推荐6 127.0.0.1:6379> sdiff user:1 user:3 1) "2" 2) "4"