unordered collection of unique strings.
set值是唯一的字符串的无序集合, 把握住两个特点: 唯一无序.

清空所有的数据, 并清理显示界面:

127.0.0.1:6379> flushall
OK
127.0.0.1:6379> clear

保存一条 set 数据, 键是 myset1, 值是 1, 2, 3, 4 四个数字:

127.0.0.1:6379> sadd myset1 1 2 3 4
(integer) 4

查看键myset1 的值:

127.0.0.1:6379> smembers myset1
1) "1"
2) "2"
3) "3"
4) "4"

在键myset1里增加一个已有的数字3, 返回0, 表示添加不成功, 因为 set值是要求唯一的:

127.0.0.1:6379> sadd myset1 3
(integer) 0
127.0.0.1:6379> smembers myset1
1) "1"
2) "2"
3) "3"
4) "4"

在键myset1里增加一个新数字5, 返回1, 表示添加成功:

127.0.0.1:6379> sadd myset1 5
(integer) 1
127.0.0.1:6379> smembers myset1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"

查看键myset1的值里一共有几天数据:

127.0.0.1:6379> scard myset1
(integer) 5

新增一条 set 数据myset2:

127.0.0.1:6379> sadd myset2 5 8 7 6 4 9
(integer) 6
127.0.0.1:6379> smembers myset2
1) "4"
2) "5"
3) "6"
4) "7"
5) "8"
6) "9"

查看两条 set 数据 myset1 和 myset2 值的区别, myset1 写在前面, 表示查出所有 myset1 里有, 而 myset2 里没有的值:

127.0.0.1:6379> smembers myset1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379> sdiff myset1 myset2
1) "1"
2) "2"
3) "3"

查出 myset1 相对于 myset2 里值的差别, 并且保存成一个新 set --- myset3:

127.0.0.1:6379> sdiffstore myset3 myset1 myset2
(integer) 3
127.0.0.1:6379> smembers myset3
1) "1"
2) "2"
3) "3"

合并 myset1 和 myset2 里的所有值, 由于 set值唯一性的特点, 重复的部分只保留一个:

127.0.0.1:6379> sunion myset1 myset2
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
7) "7"
8) "8"
9) "9"

合并 myset1 和 myset2 里的所有值, 并且保存成一个新 set --- myset4:

127.0.0.1:6379> sunionstore myset4 myset1 myset2
(integer) 9
127.0.0.1:6379> smembers myset4
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
7) "7"
8) "8"
9) "9"

指定删除 set值里的某一个数

127.0.0.1:6379> srem myset4 8
(integer) 1
127.0.0.1:6379> smembers myset4
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
7) "7"
8) "9"

指定删除 set值里的某几个数

127.0.0.1:6379> srem myset4 6 7 9
(integer) 3
127.0.0.1:6379> smembers myset4
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"

随机删除 set值里的某一个数

127.0.0.1:6379> spop myset4 1
1) "5"
127.0.0.1:6379> smembers myset4
1) "1"
2) "2"
3) "3"
4) "4"

随机删除 set值里的某几个数

127.0.0.1:6379> spop myset4 3
1) "2"
2) "4"
3) "1"

取两个 set值的并集:

127.0.0.1:6379> smembers myset1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379> smembers myset2
1) "4"
2) "5"
3) "6"
4) "7"
5) "8"
6) "9"
127.0.0.1:6379> sinter myset1 myset2
1) "4"
2) "5"

取两个 set值的并集, 并保存:

127.0.0.1:6379> sinterstore myset5 myset1 myset2
(integer) 2
127.0.0.1:6379> smembers myset5
1) "4"
2) "5"

把 myset1 的值里的数字 1 挪到 myset2

127.0.0.1:6379> smove myset1 myset2 1
(integer) 1
127.0.0.1:6379> smembers myset2
1) "1"
2) "4"
3) "5"
4) "6"
5) "7"
6) "8"
7) "9"
127.0.0.1:6379> smembers myset1
1) "2"
2) "3"
3) "4"
4) "5"

以上, 就是关于 set值的一些常用命令, enjoy......

理解 Redis(7) - Set 值的更多相关文章

  1. 理解 Redis(3) - 字符串值

    正如前面所讲的, redis 的数据结构就是一系列的键值对键 -> printable ASCII (可打印的 ASCII 码, 最大值是 512MB)值 -> Primitives (基 ...

  2. 理解 Redis(6) - List 值

    list 值就是一组根据插入顺序排列的字符串, 从左向右排列, 左边为头(head), 右侧为尾(tail). 左边为顶部, 右边为底部. 下图为 list 值的示意图: 从左侧开始向键为 num 的 ...

  3. 理解 Redis(5) - 哈希值

    哈希值存储示意图:首先, 我想先认真理解一下哈希值的数据结构:前面讲过, redis 存储的是键值对, 键永远都是可以打印的 ASCII 码, 值是字符串, 或者是以其他形式包裹的字符串. 上两节介绍 ...

  4. 深入理解Redis:底层数据结构

    简介 redis[1]是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorte ...

  5. 深入理解Redis主键失效原理及实现机制(转)

    原文:深入理解Redis主键失效原理及实现机制 作为一种定期清理无效数据的重要机制,主键失效存在于大多数缓存系统中,Redis 也不例外.在 Redis 提供的诸多命令中,EXPIRE.EXPIREA ...

  6. C++ : 从栈和堆来理解C#中的值类型和引用类型

    C++中并没有值类型和引用类型之说,标准变量或者自定义对象的存取默认是没有区别的.但如果深入地来看,就要了解C++中,管理数据的两大内存区域:栈和堆. 栈(stack)是类似于一个先进后出的抽屉.它的 ...

  7. 【原创】深入理解c++的右值引用

    0 左值和右值     一个左值表达式代表的是对象本身,而右值表达式代表的是对象的值:变量也是左值.   1 右值引用作用 为了支持移动操作(包括移动构造函数和移动赋值函数),C++才引入了一种新的引 ...

  8. 深入理解Redis内存模型

    前言 Redis是目前最火爆的内存数据库之一,通过在内存中读写数据,大大提高了读写速度,可以说Redis是实现网站高并发不可或缺的一部分. 我们使用Redis时,会接触Redis的5种对象类型(字符串 ...

  9. 深入理解redis复制原理

    原文:深入理解redis复制原理 1.复制过程 2.数据间的同步 3.全量复制 4.部分复制 5.心跳 6.异步复制 1.复制过程 从节点执行 slaveof 命令. 从节点只是保存了 slaveof ...

随机推荐

  1. tft屏图像显示也成功完成

    2010-04-30 14:18:00 tft屏图像显示也成功完成. 其实有了刷屏的经验,图像显示就很简单. void address_set(uint x1,uint y1,uint x2,uint ...

  2. Linux CPU使用率含义及原理

    相关概念 在Linux/Unix下,CPU利用率分为用户态.系统态和空闲态,分别表示CPU处于用户态执的时间,系统内核执行的时间,和空闲系统进程执行的时间. 下面是几个与CPU占用率相关的概念. CP ...

  3. Pony 编程语言介绍

    Pony,一种“Rust 遇上 Erlang”的语言,让开发快捷.安全.高效.高并发的程序更简单. 在 Wallaroo Labs,我是工程副总裁,我们正在构建一个用 Pony 编程语言编写的 高性能 ...

  4. javaweb项目中errorPage的问题

    我们的请求找不到时,会跳到错误页面,tomcat提供了一个错误页面,但是不太好.分析:tomcat自带错误页面不好的原因:有一下两点: 1.不好看: 2.不能为seo做出贡献.思考:如何解决以上问题? ...

  5. java类中使用quartz,设置自动任务Demo

    package com.tech.jin.jobScheduler; import java.text.ParseException; import java.util.ArrayList; impo ...

  6. php 带省略号的分页

    原文链接:https://blog.csdn.net/u011060253/article/details/25308455 $curpage = isset($_GET[; $page = new ...

  7. 20145315何佳蕾《网络对抗》Web安全基础

    20145315何佳蕾<网络对抗>Web安全基础 1.实验后回答问题 (1)SQL注入攻击原理,如何防御 SQL Injection:就是通过把SQL命令插入到Web表单递交或输入域名或页 ...

  8. Io流的使用

    file的使用 文件流的使用 FileInpunStream  FileOutOputStream   ----------字符流 FileReader Filewriter --------字节流  ...

  9. 1.面向过程编程 2.面向对象编程 3.类和对象 4.python 创建类和对象 如何使用对象 5.属性的查找顺序 6.初始化函数 7.绑定方法 与非绑定方法

    1.面向过程编程 面向过程:一种编程思想在编写代码时 要时刻想着过程这个两个字过程指的是什么? 解决问题的步骤 流程,即第一步干什么 第二步干什么,其目的是将一个复杂的问题,拆分为若干的小的问题,按照 ...

  10. CAN通信工作原理个人心得

    CAN总线结构示意图: 说明: 1:CAN收发器(示意图中的单元)根据两总线CAN_H和CAN_L的电位差来判断总线电平: 2:实际中CAN_H与CAN_L由双绞线组成: 3:数据传递终端的电阻器,是 ...