大家好,今天分享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集合的解释就到这里了,谢谢大家