第五节:Redis 数据结构之Set 类型
存储Set,这里的Set是无序的;
和List类型不同的是,Set集合中不允许出现重复的元素
Set可包含的最大元素数量是4294967295
存储set常用命令:
添加/删除元素
获取集合中的元素
集合中的差集运算
集合中的交集运算
集合中的并集元算
扩展命令
添加set元素
查看set1中所有元素
127.0.0.1:6379> sadd set1 a b c (integer) 3 127.0.0.1:6379> smembers set1 1) "b" 2) "c" 3) "a"
无法添加重复元素:
127.0.0.1:6379> sadd set1 a d e (integer) 2 127.0.0.1:6379> smembers set1 1) "d" 2) "b" 3) "c" 4) "a" 5) "e"
删除元素
127.0.0.1:6379> srem set1 a d (integer) 2 127.0.0.1:6379> smembers set1 1) "b" 2) "c" 3) "e"
判断某个元素是否存在 返回1 表示存在 返回0表示不存在
127.0.0.1:6379> sismember set1 a (integer) 0 127.0.0.1:6379> sismember set1 b (integer) 1
sdiff计算差集
127.0.0.1:6379> sadd set2 a b c (integer) 3 127.0.0.1:6379> sadd set3 b c d e (integer) 4 127.0.0.1:6379> sdiff set2 set3 1) "a" 127.0.0.1:6379> sdiff set3 set2 1) "d" 2) "e"
sinter计算交集
127.0.0.1:6379> sinter set2 set3
1) "b"
2) "c"
sunion计算并集
127.0.0.1:6379> sunion set2 set3
1) "a"
2) "b"
3) "d"
4) "c"
5) "e"
scard计算元素总数
127.0.0.1:6379> smembers set1 1) "b" 2) "c" 3) "e" 127.0.0.1:6379> scard set1 (integer) 3
srandmember 随机取一个/n个元素
127.0.0.1:6379> smembers set1 1) "b" 2) "c" 3) "e" 127.0.0.1:6379> srandmember set1 "e" 127.0.0.1:6379> srandmember set1 2 1) "c" 2) "e"
比如猜你喜欢,随机选几个;
sdiffstore 把差集结果存储到新集合中
127.0.0.1:6379> smembers set1 1) "b" 2) "c" 3) "e" 127.0.0.1:6379> smembers set2 1) "b" 2) "c" 3) "a" 127.0.0.1:6379> sdiffstore r1 set1 set2 (integer) 1 127.0.0.1:6379> smembers r1 1) "e"
sinterstore 把交集结果存储到新集合中
127.0.0.1:6379> smembers set1 1) "b" 2) "c" 3) "e" 127.0.0.1:6379> smembers set2 1) "b" 2) "c" 3) "a" 127.0.0.1:6379> sinterstore r2 set1 set2 (integer) 2 127.0.0.1:6379> smembers r2 1) "b" 2) "c"
sunionstore把并集结果存储到新集合中
127.0.0.1:6379> smembers set1 1) "b" 2) "c" 3) "e" 127.0.0.1:6379> smembers set2 1) "b" 2) "c" 3) "a" 127.0.0.1:6379> sunionstore r3 set1 set2 (integer) 4 127.0.0.1:6379> smembers r3 1) "b" 2) "c" 3) "a" 4) "e"
存储Set使用场景
跟踪一些唯一性数据
用于维护数据对象之间的关联关系