大家好,今天分享redis set 集合
set(集合)
这是关于它一些解释
Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
集合对象的编码可以是 intset 或者 hashtable。
Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
集合中
最大的成员数为
232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
实操开始:
删除所有数据库信息
127.0.0.1:6379> FLUSHALL
OK
 
通过 SADD 命令向名为xuexi 的集合插入的三个元素。
127.0.0.1:6379> SADD xuexi linux
(integer) 1
127.0.0.1:6379> SADD xuexi mysql
(integer) 1
127.0.0.1:6379> SADD xuexi redis
(integer) 1
127.0.0.1:6379> SADD xuexi html
(integer) 1
 
查看这个xuexi这个集合里有什么东西
127.0.0.1:6379> SMEMBERS xuexi
1) "linux"
2) "redis"
3) "mysql"
4) "html"
127.0.0.1:6379> 
 
判断linux(这个数据是不是xuexi这个集合中的)
 (返回1,表示条件成立)
127.0.0.1:6379> SISMEMBER xuexi linux
(integer) 1
 
php(这个数据就没有)
127.0.0.1:6379> SISMEMBER xuexi php
(integer) 0    (0代表不成立)
 
再次添加就失败了,因为set 集合当中的数据不可以重复
127.0.0.1:6379> SADD xuexi redis
(integer) 0
 
获取set集合当中数据的个数
127.0.0.1:6379> SCARD xuexi
(integer) 4
 
删除linux这个数据
127.0.0.1:6379> SREM xuexi linux
(integer) 1
127.0.0.1:6379> 
 
查看现在集合当中的数据
127.0.0.1:6379> SMEMBERS xuexi
1) "redis"
2) "mysql"
3) "html"
 
随即抽取set 集合当中的数据
127.0.0.1:6379> SRANDMEMBER xuexi
"redis"
127.0.0.1:6379> SRANDMEMBER xuexi
"html"
127.0.0.1:6379> SRANDMEMBER xuexi
"html"
 
也可以指定个数
127.0.0.1:6379> SRANDMEMBER xuexi 2
1) "redis"
2) "mysql"
127.0.0.1:6379> SRANDMEMBER xuexi 2
1) "mysql"
2) "html"
127.0.0.1:6379> SRANDMEMBER xuexi 2
1) "redis"
2) "html"
127.0.0.1:6379> 
 
查看现在的数据
127.0.0.1:6379> SMEMBERS xuexi
1) "mysql"
2) "html"
3) "redis"
127.0.0.1:6379> 
 
随即删除数据
127.0.0.1:6379> SPOP xuexi
"mysql"
127.0.0.1:6379> SPOP xuexi
"html"
127.0.0.1:6379> 
 
指定删除的个数进行删除
127.0.0.1:6379> SPOP xuexi 1
1) "go"
127.0.0.1:6379> SPOP xuexi 2
1) "ja"
2) "css"
127.0.0.1:6379> SPOP xuexi 3
1) "nodejs"
2) "redis"
3) "vue"
 
新建数据
127.0.0.1:6379> SADD jishu wangluo
(integer) 1
127.0.0.1:6379> SADD jishu czxt
(integer) 1
127.0.0.1:6379> SADD jishu c
(integer) 1
127.0.0.1:6379> SADD jishu c++
(integer) 1
127.0.0.1:6379> SADD jishu js
(integer) 1
 
创建set 集合,写数据
127.0.0.1:6379> SADD jishi01 redis
(integer) 1
 
移动数据
127.0.0.1:6379> smove jishu jishu01 "c++"
(integer) 1
 
原本是jishu的数据被移动到了jishu01
127.0.0.1:6379> SMEMBERS jishu01
1) "c++"
 
查看集合的数据(c++已经没有了)
127.0.0.1:6379> SMEMBERS jishu
1) "wangluo"
2) "js"
3) "czxt"
4) "c"
 
创建集合
127.0.0.1:6379> SADD k1 123
(integer) 1
127.0.0.1:6379> SADD k1 456
(integer) 1
127.0.0.1:6379> SADD k1 789
(integer) 1
 
这个是k1当中的数据
127.0.0.1:6379> SMEMBERS k1
1) "123"
2) "456"
3) "789"
 
127.0.0.1:6379> SADD k2 789
(integer) 1
127.0.0.1:6379> SADD k2 745
(integer) 1
127.0.0.1:6379> SADD k2 569
(integer) 1
 
这是k2当中数据
127.0.0.1:6379> SMEMBERS k2
1) "569"
2) "745"
3) "789"
 
取出这两个集合当中不一样的数据
127.0.0.1:6379> SDIFF k1 k2
1) "123"
2) "456"
 
取出这两个集合当中一样的数据
127.0.0.1:6379> SINTER k1 k2
1) "789"
 
这是他俩的并集
127.0.0.1:6379> SUNION k1 k2
1) "123"
2) "456"
3) "569"
4) "745"
5) "789"
 
好了,有关于Redis set集合的解释就到这里了,谢谢大家










