Redis五大数据类型 set
1、概念
1、Redis中set可以自动排重(不会出现重复数据),提供了判断某个成员是否在一个set集合内的重要接口(list没有此功能)
2、无序集合,底层是一个value为null的hash表,添加、删除、查找的复杂度都是O(1)
O(1):o(1)表示一个关于1的高阶无穷小
3、集合中的元素个数最多为2的32次方-1个
2、常用命令
1、sadd < key> < value1> < value2> …将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略。
.
2、smembers < key> 取出该集合的所有值。
.
3、sismember < key> < value> 判断集合< key>是否为含有该< value>值,有返回1,没有返回0
.
4、scard < key> 返回该集合的元素个数。
.
5、srem < key> < value1> < value2> …删除集合中的某个元素。
.
6、spop < key> 随机从该集合中吐出一个值。 会从集合中删除
.
7、srandmember < key> < n>随机从该集合中取出n个值。不会从集合中删除
.
8、sinter < key1> < key2> 返回两个集合的交集元素。
.
9、sinterstore key key1 key2 返回给定所有集合的交集并存储在指定 key 中,如果指定的集合已经存在,则将其覆盖。
.
10、sunion < key1> < key2> 返回两个集合的并集元素。
.
11、sunionstore key < key1> < key2> 返回给定集合的并集存储在指定的集合 key 中,如果 指定key已经存在,则将其覆盖。
.
12、sdiff < key1> < key2> 返回两个集合的差集元素。
.
13、sdiffstore key key1 key2 返回给定所有集合的差集并存储在 指定key中,如果指定的集合已经存在,则将其覆盖。
.
14、smove key1 key2 member 命令将指定成员 member 元素从 key1集合移动到 key2集合。
127.0.0.1:6379> sadd testSet 1 2 3 4 5 6 7 8 9 10
10
127.0.0.1:6379> smembers testSet //返回set集合所有元素
1
2
3
4
5
6
7
8
9
10
127.0.0.1:6379> sismember testSet 3 //判断集合里面是否有此元素
1
127.0.0.1:6379> srem testSet 10 9 8 //删除集合中的元素
3
127.0.0.1:6379> srandmember testSet 5 //随机返回集合中的元素
1) "1"
2) "6"
3) "7"
4) "2"
5) "3"
127.0.0.1:6379> sadd testSet2 1 6 5 8 9
(integer) 5
127.0.0.1:6379> sinter testSet2 testSet //返回两个集合的交集
1) "1"
2) "5"
3) "6"
127.0.0.1:6379> sunion testSet2 testSet //返回两个集合的并集
1) "1"
2) "2"
3) "3"
4) "5"
5) "6"
6) "7"
7) "8"
8) "9"
127.0.0.1:6379> sdiff testSet2 testSet //返回两个集合的差集(testSet2里面存在,testSet里面不存在的)
1) "8"
2) "9"
127.0.0.1:6379> sdiff testSet testSet2 //返回两个集合的差集(testSet里面存在,testSet2里面不存在的)
1) "2"
2) "3"
3) "7"
127.0.0.1:6379> spop testSet //随机删除集合中一个值
"7"
127.0.0.1:6379> sunionstore testSetAll testSet testSet2 //将两个集合的并集都存放在 testSetAll 里面
(integer) 7
127.0.0.1:6379> smembers testSetAll
1) "1"
2) "2"
3) "3"
4) "5"
5) "6"
6) "8"
7) "9"
127.0.0.1:6379> smove testSet testSet2 5 //将5 从testSet 移动到 testSet2
(integer) 1
127.0.0.1:6379> sdiffstore diffSet testSet testSet2 //将testSet和testSet2 的差集存放在dissSet中
(integer) 1
127.0.0.1:6379> smembers diffSet
1) "2"
127.0.0.1:6379> sinterstore interSet testSet testSet2
(integer) 1
127.0.0.1:6379> smembers interSet
1) "6"
3、应用场景:
1、随机歌曲,随机… srandmember 随机从该集合中取出n个值。
.
2、共同好友 ,最常见的是QQ,sinter: 返回两个集合的交集元素。
.
3、好友差集 , 最常见的也是QQ (提示A是B的好友,你是否要添加等), sdiff :返回两个集合的差集
.
4、判断黑名单, sismember
.
5、查询好友总和 scard
下一章:Redis数据类型之有序集合—zset一起努力学习吧!!!😀