6.Redis常用命令:Set

  在Redis中,我们可以将Set类型看作为没有排序的字符集合,和List类型一样,我们也可以在该类型的数据值上执行添加、删除或判断某一元素是否存在等操作。需要说明的是,这些操作的时间复杂度为O(1),即常量时间内完成次操作。Set可包含的最大元素数量是4294967295。       和List类型不同的是,Set集合中不允许出现重复的元素,这一点和C++标准库中的set容器是完全相同的。换句话说,如果多次添加相同元素,Set中将仅保留该元素的一份拷贝。和List类型相比,Set类型在功能上还存在着一个非常重要的特性,即在服务器端完成多个Sets之间的聚合计算操作,如unions、intersections和differences。由于这些操作均在服务端完成,因此效率极高,而且也节省了大量的网络IO开销。

1、SADD key value1 value2 value3

增加值。如果该值已存在,那么将会忽略,其他值正常插入。

127.0.0.1:6379> sadd country china japan singapore
(integer) 3
127.0.0.1:6379> smembers country
1) "china"
2) "singapore"
3) "japan"

2、SREM key value1 [value2 ...]

移除指定的成员

127.0.0.1:6379> smembers country
1) "china"
2) "singapore"
3) "japan"
127.0.0.1:6379> srem country japan
(integer) 1
127.0.0.1:6379> smembers country
1) "china"
2) "singapore"

3、SISMEMBER key value

成员是否存在

127.0.0.1:6379> smembers country
1) "china"
2) "singapore"
127.0.0.1:6379> sismember country china
(integer) 1

4、SCARD key

获取Set中成员的数量

127.0.0.1:6379> smembers country
1) "china"
2) "singapore"
127.0.0.1:6379> scard country
(integer) 2

5、SMEMBERS key

列出所有成员

sadd country china japan singapore
(integer) 3
127.0.0.1:6379> smembers country
1) "china"
2) "singapore"
3) "japan"

6、SPOP key

随机的移除Set中的一个成员并返回它

127.0.0.1:6379> smembers country
1) "Singapore"
2) "Japan"
3) "Bakistan"
4) "America"
5) "China"
6) "France"
127.0.0.1:6379> spop country
"Japan"
127.0.0.1:6379> spop country
"Bakistan"

7、SRANDMEMBER key

随机的返回Set中的一个成员,不同的是该命令并不会删除返回的成员

127.0.0.1:6379> smembers country
1) "America"
2) "China"
3) "Singapore"
4) "France"
127.0.0.1:6379> srandmember country
"America"
127.0.0.1:6379> srandmember country
"France"
127.0.0.1:6379> smembers country
1) "America"
2) "China"
3) "Singapore"
4) "France"

8、SMOVE source destination member

原子性的将参数中的成员从source键移入到destination键所关联的Set中。如果该成员在 source 中不存在,那么操作将被忽略。如果该成员已在 destination 中存在,那么该操作仅仅将 member 从 source 中移除。

127.0.0.1:6379> smembers country
1) "America"
2) "China"
3) "Singapore"
4) "France"
127.0.0.1:6379> smembers developedCty 
1) "Japan"
127.0.0.1:6379> smove country developedCty America
(integer) 1
127.0.0.1:6379> smembers developedCty
1) "America"
2) "Japan"
127.0.0.1:6379> smembers country
1) "China"
2) "Singapore"
3) "France"

------------------ 集合操作 ------------------

9、SDIFF key1 [key2 ...]

返回 key1 - key2 的差集

127.0.0.1:6379> sadd AsiaCountry China Japan Korea Thailand Singapore Vietnam
(integer) 6
127.0.0.1:6379> sadd DevelopedCty America Japan Korea Singapore France German
(integer) 6
127.0.0.1:6379> sdiff AsiaCountry DevelopedCty  //找到亚洲中的非发达国家
1) "China"
2) "Vietnam"
3) "Thailand"
127.0.0.1:6379> sdiff DevelopedCty AsiaCountry  //找到发达国家中国的非亚洲国家
1) "America"
2) "German"
3) "France"

10、SINTER key1 key2

返回交集

127.0.0.1:6379> sinter AsiaCountry DevelopedCty  //找出既是发达国家,又是亚洲国家的
1) "Japan"  
2) "Korea"
3) "Singapore"

11、SUNION key1 [key2 ...]

返回并集

127.0.0.1:6379> smembers AsiaCountry
1) "Vietnam"
2) "Japan"
3) "China"
4) "Korea"
5) "Thailand"
6) "Singapore"
127.0.0.1:6379> smembers DevelopedCty
1) "German"
2) "Japan"
3) "America"
4) "Korea"
5) "Singapore"
6) "France"
127.0.0.1:6379> sunion AsiaCountry DevelopedCty
1) "Japan"
2) "America"
3) "China"
4) "Korea"
5) "Singapore"
6) "Thailand"
7) "Vietnam"
8) "German"
9) "France"

12、SUNIONSTORE key1 key2 [key3 ...]

返回key2,key3等的并集并存储在key1中

127.0.0.1:6379> smembers AsiaCountry
1) "Japan"
2) "China"
3) "Korea"
4) "Singapore"
127.0.0.1:6379> smembers DevelopedCty
1) "German"
2) "Japan"
3) "America"
4) "Korea"
5) "Singapore"
6) "France"
127.0.0.1:6379> sunionstore totalCty AsiaCountry DevelopedCty
(integer) 7
127.0.0.1:6379> smembers totalCty
1) "German"
2) "Japan"
3) "America"
4) "China"
5) "France"
6) "Korea"
7) "Singapore"

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Android知识点总结

Java总结IO之总集篇

字符流和字节流向来各行其事,很少有交集。 但Reader和Writer有两个奇子,名叫InputStreamReader(男)和OutputStreamWri...

1415
来自专栏函数式编程语言及工具

Akka(18): Stream:组合数据流,组件-Graph components

   akka-stream的数据流可以由一些组件组合而成。这些组件统称数据流图Graph,它描述了数据流向和处理环节。Source,Flow,Sink是最基础...

2616
来自专栏大数据风控

R中的自定义函数function

函数语法 函数名<-function(parameters){ statemens return(expression)} printLine <- funct...

2407
来自专栏swag code

练习-Map集合的操作

Teacher对象的值: “Tom”,”Java”, “John”,”Oracle”, “Susan”,”Oracle”, “Jerry”,”JDBC”...

1123
来自专栏mathor

2018年全国多校算法寒假训练营练习比赛(第一场)六子冲

 棋盘上攻击方的2个棋子(2子必须相连并主动移动其中的1个)与被攻方的1个棋子皆处在一条直线上并相邻时,被攻方的这个棋子就被消灭  每次移动后判断一下,移动后...

893
来自专栏ml

Redis学习笔记二

  学习Redis添加Object时,由于Redis只能存取字符串String,对于其它数据类型形容:Int,long,double,Date等不提供支持,因而...

3379
来自专栏Hongten

java开发_数字转换汉语中人民币的大写_完整版

======================================================

4053
来自专栏一个会写诗的程序员的博客

禅与 JavaScript 编程艺术, Zen and The Art of JavaScript Programming禅与 JavaScript 编程艺术

Zen and The Art of JavaScript Programming

1241
来自专栏HansBug's Lab

2764: [JLOI2011]基因补全

2764: [JLOI2011]基因补全 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 570  Solv...

3058
来自专栏LhWorld哥陪你聊算法

Hadoop源码篇--Reduce篇

Reduce文件会从Mapper任务中拉取很多小文件,小文件内部有序,但是整体是没序的,Reduce会合并小文件,然后套个归并算法,变成一个整体有序的文件。

2651

扫码关注云+社区

领取腾讯云代金券