在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:> sadd country china japan singapore
(integer)
127.0.0.1:> smembers country
) "china"
) "singapore"
) "japan"

2、SREM key value1 [value2 ...]

移除指定的成员

127.0.0.1:> smembers country
) "china"
) "singapore"
) "japan"
127.0.0.1:> srem country japan
(integer)
127.0.0.1:> smembers country
) "china"
) "singapore"

3、SISMEMBER key value

成员是否存在

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

4、SCARD key

获取Set中成员的数量

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

5、SMEMBERS key

列出所有成员

sadd country china japan singapore
(integer)
127.0.0.1:> smembers country
) "china"
) "singapore"
) "japan"

6、SPOP key

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

127.0.0.1:> smembers country
) "Singapore"
) "Japan"
) "Bakistan"
) "America"
) "China"
) "France"
127.0.0.1:> spop country
"Japan"
127.0.0.1:> spop country
"Bakistan"

7、SRANDMEMBER key

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

127.0.0.1:> smembers country
) "America"
) "China"
) "Singapore"
) "France"
127.0.0.1:> srandmember country
"America"
127.0.0.1:> srandmember country
"France"
127.0.0.1:> smembers country
) "America"
) "China"
) "Singapore"
) "France"

8、SMOVE source destination member

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

127.0.0.1:> smembers country
) "America"
) "China"
) "Singapore"
) "France"
127.0.0.1:> smembers developedCty
) "Japan"
127.0.0.1:> smove country developedCty America
(integer)
127.0.0.1:> smembers developedCty
) "America"
) "Japan"
127.0.0.1:> smembers country
) "China"
) "Singapore"
) "France"

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

9、SDIFF key1 [key2 ...]

返回 key1 - key2 的差集

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

10、SINTER key1 key2

返回交集

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

11、SUNION key1 [key2 ...]

返回并集

127.0.0.1:> smembers AsiaCountry
) "Vietnam"
) "Japan"
) "China"
) "Korea"
) "Thailand"
) "Singapore"
127.0.0.1:> smembers DevelopedCty
) "German"
) "Japan"
) "America"
) "Korea"
) "Singapore"
) "France"
127.0.0.1:> sunion AsiaCountry DevelopedCty
) "Japan"
) "America"
) "China"
) "Korea"
) "Singapore"
) "Thailand"
) "Vietnam"
) "German"
) "France"

12、SUNIONSTORE key1 key2 [key3 ...]

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

127.0.0.1:> smembers AsiaCountry
) "Japan"
) "China"
) "Korea"
) "Singapore"
127.0.0.1:> smembers DevelopedCty
) "German"
) "Japan"
) "America"
) "Korea"
) "Singapore"
) "France"
127.0.0.1:> sunionstore totalCty AsiaCountry DevelopedCty
(integer)
127.0.0.1:> smembers totalCty
) "German"
) "Japan"
) "America"
) "China"
) "France"
) "Korea"
) "Singapore"

6.Redis常用命令:Set的更多相关文章

  1. Redis常用命令

    Redis常用命令Redis提供了丰富的命令对数据库和各种数据类型进行操作,这些命令可以再Linux终端使用.1.键值相关命令2.服务器相关命令 一.键值相关命令 1.get get 键值 当 key ...

  2. 第2讲 Redis常用命令与高级应用

    目录 一.redis数据类型 5. sorted sets类型和操作 二.Redis常用命令 1.键值相关命令 2.服务器相关命令 三. redis高级应用 1. 给redis服务器设置密码 2.持久 ...

  3. Redis常用命令手册:服务器相关命令

    Redis提供了丰富的命令(command)对数据库和各种数据类型进行操作,这些command可以在Linux终端使用.在编程时,比如各类语言包,这些命令都有对应的方法.下面将Redis提供的命令做一 ...

  4. redis redis常用命令及内存分析总结(附RedisClient工具简介

    redis常用命令及内存分析总结(附RedisClient工具简介 by:授客 QQ:1033553122 redis-cli工具 查看帮助 连接redis数据库 常用命令 exists key se ...

  5. Redis常用命令与高级应用

    附: 127.0.0.1:6379> set xiaofei 小飞 OK 127.0.0.1:6379> get xiaofei "\xe5\xb0\x8f\xe9\xa3\x9 ...

  6. Redis快速起步及Redis常用命令大全

    本系列教程内容提要 Java工程师之Redis实战系列教程教程是一个学习教程,是关于Java工程师的Redis知识的实战系列教程,本系列教程均以解决特定问题为目标,使用Redis快速解决在实际生产中的 ...

  7. redis配置密码 redis常用命令

    redis配置密码 1.通过配置文件进行配置yum方式安装的redis配置文件通常在/etc/redis.conf中,打开配置文件找到 [plain] view plain copy   #requi ...

  8. redis常用命令及持久化机制

    redis  常用命令 查找redis服务文件 find / -name  redis-server 查找配置文件 find / -name redis.conf 启动服务时候,要指定配置文件 启动r ...

  9. Redis 常用命令 大全

    Redis 常用命令 发现几个很好的 Redis 常用命令汇总大全网页,分享给小伙伴们~ 1.Redis 命令参考 http://redisdoc.com/string/index.html 2.W3 ...

  10. No-sql之redis常用命令

    转自:http://blog.csdn.net/nicewuranran/article/details/51793760 No-SQL之Redis 介绍 Redis是一种基于内存存储的key-val ...

随机推荐

  1. 关于c语言中栈和堆释放的问题

    #include<iostream> #include<string> using namespace std; int main() { string st; cin> ...

  2. Java编程规范(二)

    二.格式规范 在上一篇的java编程规范(一)中我们讲述了在Java编码中的一般原则,虽然这些原则并不涉及具体的代码规范,但是这些原则却是我们在Java开发过程中所应该遵循的规范与思想.今天我们将学习 ...

  3. .NET Core中妙用unsafe减少gc提升字符串处理性能

    一.前言 昨天在群里讨论怎么样效率的把一个字符串进行反转,一般的情况我们都知道,只要对String对象进行操作,那么就会生成新的String对象,比如"1"+"2&quo ...

  4. WebApi接口传参不再困惑:传参详解

    原文出处: 懒得安分 前言:还记得刚使用WebApi那会儿,被它的传参机制折腾了好久,查阅了半天资料.如今,使用WebApi也有段时间了,今天就记录下API接口传参的一些方式方法,算是一个笔记,也希望 ...

  5. PDO数据访问抽象层

    PDO数据访问抽象层: 我们使用的mysqli是针对mysql这个数据库扩展的一个类,如果要用到别的数据库的话就可以用PDO来做 1.操作数据库 先来代码 <!--PDO--> <! ...

  6. Hibernate一对多双向关联映射

    建立多对一的单向关联关系    Emp.java            private Integer empNo //员工编号            private String empName / ...

  7. smarty模板基础1

    smarty模板的作用可以让前端和后端分离(也就是前端的显示页面和后端的php代码). smarty模板的核心是一个类,下载好的模板中有这么几个重要的文件夹 (1)libs核心文件夹(2)int.in ...

  8. 云服务器spark集群搭建

    ---恢复内容开始--- 1:去官网下载spark http://spark.apache.org 2:解压,然后在自己的机器上编译conf中的两个文件 mv slaves.template slav ...

  9. perl 获取系统时间

    最近需要将字符串转换成时间,找了下资料,实战如下,发现时timelocal费了些时间 strftime也可在 c / c++ / awk / php 中使用,用法基本一致. 这个也不错 $time = ...

  10. 从USB驱动器运行Windows 10

    我相信很多人和我一样.梦想着有个随身携带的U盘版操作系统.无论走到哪里,只要有电脑都可以随时运行自己配置好的操作系统.本篇博文就会一步步的教你如何从USB驱动器加载和运行Windows 10. 让我想 ...