一、介绍

  Redis的Set是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。

  Redis中集合是通过哈希表实现的,所以添加、删除、查找的复杂度都是O(1)。

  集合中最大的成员数为 (4294967295, 每个集合可存储40多亿个成员)。

  

  基本命令:

  • 增加/更新

  sadd key member1 [member2 ...]   (向集合添加一个或多个成员)

  • 查询

  scard key  (获取集合的成员数)

  smembers key  (返回集合中的所有成员)

  srandmember key [count]  (返回集合中一个或多个随机数)

  sscan key cursor [match pattern] [count count]  (迭代集合中的元素)

  • 判断

  sismember key member  (判断member元素是否是集合key的成员)

  • 删除/移动

  srem key member1 [member2 ...]  (移除集合中一个或多个成员)

  spop key  (移除并返回集合中的一个随机元素) 

  smove source destination member  (将member元素从source集合移动到destination集合) 

 

  • 差集/并集

  sdiff key1 [key2]  (返回给定所有集合的差集)

  sdiffstore destination key1 [key2]  (返回给定所有集合的差集并存储在destination中)

  sinter key1 [key2]  (返回给定所有集合的交集)

  sinterstore destination key1 [key2]  (返回给定所有集合的交集并存储在destination中)

  sunion key1 [key2]  (返回所有给定集合的并集)

  sunionstore destination key1 [key2]  (所有给定集合的并集存储在destination集合中)

二、操作

  • 增加

  1、sadd key member1 [member2 ...]   (向集合添加一个或多个成员)

  

  如果集合中已存在已有的元素,则添加返回0

  

  • 查询

  1、scard key  (获取集合的成员数)

  

  2、smembers key  (返回集合中的所有成员)

  

  3、srandmember key [count]  (返回集合中一个或多个随机数)

  

  4、sscan key cursor [match pattern] [count count]  (迭代集合中的元素)

  判断集合元素是否存在(0: 不存在, 1: 存在)

  

  

  • 判断

  1、sismember key member  (判断member元素是否是集合key的成员)

  

  • 删除/移动

  1、srem key member1 [member2 ...]  (移除集合中一个或多个成员)

  如果删除的元素不存在,返回0,删除成功返回1

  

  2、spop key  [count] (移除并返回集合中的一个或多个随机元素)

  

  3、smove source destination member  (将member元素从source集合移动到destination集合)

  

  

  如果集合中元素不存在,返回0

  

  • 差集/并集

  1、sdiff key1 [key2]  (返回给定所有集合的差集)

  获取两个集合的差集(不同的元素)

  

  2、sdiffstore destination key1 [key2]  (返回给定所有集合的差集并存储在destination中)

  set1 和 set2  的差集

  

  

  返回set1和set2集合的差集并存储在set3中:

  

  3、sinter key1 [key2]  (返回给定所有集合的交集)

  获取两个集合的交集(相同的元素)

  

  4、sinterstore destination key1 [key2]  (返回给定所有集合的交集并存储在destination中)

  

  5、sunion key1 [key2]  (返回所有给定集合的并集)

  并集的结果:给定的集合里面的元素只能出现一次

  

  6、sunionstore destination key1 [key2]  (所有给定集合的并集存储在destination集合中)

  

Redis学习笔记(六)——数据结构之Set的更多相关文章

  1. Redis学习笔记六:持久化实验(AOF,RDB)

    作者:Grey 原文地址:Redis学习笔记六:持久化实验(AOF,RDB) Redis几种持久化方案介绍和对比 AOF方式:https://blog.csdn.net/ctwctw/article/ ...

  2. Redis学习笔记六:独立功能之 Lua 脚本

    Redis 2.6 开始支持 Lua 脚本,通过在服务器环境嵌入 Lua 环境,Redis 客户端中可以原子地执行多个 Redis 命令. 使用 eval 命令可以直接对输入的脚本求值: 127.0. ...

  3. Java基础学习笔记(六) - 数据结构和集合

    一.认识数据结构 1.数据结构有什么用? 合理的使用数据结构,可以更方便的查找存储数据. 2.常见的数据结构 数据存储常用结构有:栈.队列.数组.链表和红黑树. 栈:堆栈(stack),它是运算受限的 ...

  4. Redis学习笔记一:数据结构与对象

    1. String(SDS) Redis使用自定义的一种字符串结构SDS来作为字符串的表示. 127.0.0.1:6379> set name liushijie OK 在如上操作中,name( ...

  5. Redis学习笔记(二) Redis 数据类型

    Redis 支持五种数据类型:string(字符串).list(列表).hash(哈希).set(集合)和 zset(有序集合),接下来我们讲解分别讲解一下这五种类型的的使用. String(字符串) ...

  6. redis 学习笔记(6)-cluster集群搭建

    上次写redis的学习笔记还是2014年,一转眼已经快2年过去了,在段时间里,redis最大的变化之一就是cluster功能的正式发布,以前要搞redis集群,得借助一致性hash来自己搞shardi ...

  7. Redis学习笔记~目录

    回到占占推荐博客索引 百度百科 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合). ...

  8. (转)redis 学习笔记(1)-编译、启动、停止

    redis 学习笔记(1)-编译.启动.停止   一.下载.编译 redis是以源码方式发行的,先下载源码,然后在linux下编译 1.1 http://www.redis.io/download 先 ...

  9. Redis学习笔记(2)——Redis的下载安装部署

    一.下载Redis Redis的官网下载页上有各种各样的版本,如图 但是官网下载的Redis项目不正式支持Windows.如果需要再windows系统上部署,要去GitHub上下载.我下载的是Redi ...

  10. Redis学习笔记(3)——Redis的命令大全

    Redis是一种nosql数据库,常被称作数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted se ...

随机推荐

  1. 2018尚硅谷最新SpringCloud免费视频教程

    [课程内容] 01.前提概述 02.大纲概览 03.从面试题开始 04.微服务是什么 05.微服务是什么2 06.微服务与微服务架构 07.微服务优缺点 08.微服务技术栈有哪些 09.为什么选择Sp ...

  2. springboot:This application has no explicit mapping for /erro

    springboot启动没有报错,但是访问的时候返回如上图的错误.看报错内容感觉是没有这个mapping对应的接口.但是确实写了. 最终发现是因为springboot的启动类放的位置不对.启动类所在的 ...

  3. Spring学习(二)Spring IoC 和 DI 简介

    一.IOC(控制反转) 定义:反转控制 (Inversion Of Control)的缩写,即创建对象的反转控制. 正向控制:若要使用某个对象,需要自己去负责对象的创建. 反向控制:若要使用某个对象, ...

  4. 使用Navicat连接MySQL8.0版本报1251错误

    出现1251错误是因为,MySQL8.0版本改变了密码的验证规则caching_sha2_password,MySQL之前的版本验证规则是mysql_native_password,现在需要修改MyS ...

  5. 提权 EXP

    windows: 漏洞列表 #Security Bulletin #KB #Description #Operating System CVE-2017-0213 [Windows COM Eleva ...

  6. 渗透测试之信息收集(Web安全攻防渗透测试实战指南第1章)

    收集域名信息 获得对象域名之后,需要收集域名的注册信息,包括该域名的DNS服务器信息和注册人的联系方式等. whois查询 对于中小型站点而言,域名所有人往往就是管理员,因此得到注册人的姓名和邮箱信息 ...

  7. idea如何通过数据库生成实体类

    ---恢复内容开始--- https://blog.csdn.net/liu_yulong/article/details/72910588 ---恢复内容结束---

  8. spring-cloud-starter-openfeign 源码详细讲解

    1.测试环境搭建: 1.1 架构图: product服务提供一个接口: order服务通过feign的方式来调用product的接口: order服务需要引入依赖: <dependency> ...

  9. Spring学习(十)--Spring的AOP

    1.Spring AOP拦截器 (1)设计原理 Spring AOP在通过JDK的Proxy或者CGLIB方式生成代理对象的时候,拦截器的相关信息就配置到代理对象中了. 1)如果使用JDK的Proxy ...

  10. 解决Use 'LimitInternalRecursion' to increase the limit if necessary的问题 CodeIgniter .htaccess

    配置.htaccess如下: RewriteEngine on RewriteBase / RewriteCond $1 !^(index\.php|images|robots\.txt|css|js ...