Redis 集合处理

 

学习了列表之后,发现了Redis处理字符串的功能强大。

为了适应不同场景的需求,还有一个用的很多的就是集合。

Redis提供的集合支持的类型是字符串。并且集合中的元素值是唯一的,也就是说不能出现重复数据。

而且,集合的实现是通过哈希的方式,在修改集合的时候复杂度都为O(1)。

Redis支持集合的最大数量为2^32 - 1个。

 

1、SADD 命令


用于将一个或多个元素加入到指定的集合中,由于集合不存在重复元素,所以已经存在的成员会被忽略。

如果指定的集合不存在,则该命令会创建该集合,并且把元素加入进去。

如果指定的KEY不是一个集合,则返回一个错误说明。

127.0.0.1:6379> SADD KEY MEMBER [member ...]

例如,

127.0.0.1:6379> SET SET A
OK
127.0.0.1:6379> SADD SET 1 2 3 4 5 
(error) WRONGTYPE Operation against a key holding the wrong kind of value
127.0.0.1:6379> SADD SET1 1 2 3 4 5
(integer) 5
127.0.0.1:6379> SMEMBERS SET1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"

2、SCARD 命令


用于返回指定集合中元素的数量。

127.0.0.1:6379> SCARD KEY 

例如,

127.0.0.1:6379> SCARD SET1
(integer) 5

3、SDIFF 命令


用于返回给定集合之间的差集。

一定是前面的集合减去后面的集合,剩余的元素。

127.0.0.1:6379> SDIFF KEY KEY [key ...]

例如,

127.0.0.1:6379> sadd SET 1 2 3 4 5
(integer) 5
127.0.0.1:6379> sadd SET1 1 2 3 
(integer) 3
127.0.0.1:6379> sdiff SET1 SET
(empty list or set)
127.0.0.1:6379> sdiff SET SET
(empty list or set)
127.0.0.1:6379> sdiff SET SET1
1) "4"
2) "5"
127.0.0.1:6379> sadd SET2 1 2 3 4 5 6
(integer) 6
127.0.0.1:6379> sdiff SET SET1 SET2
(empty list or set)
127.0.0.1:6379> sdiff SET2 SET1 SET
1) "6"

4、SDIFFSTORE 命令


用于将给定集合之间的差集存储在指定的集合中。

如果指定的DESTINATION集合已存在,则里面的元素会被覆盖。

127.0.0.1:6379> SDIFFSTORE DESTINATION KEY KEY [key ...]

例如,

127.0.0.1:6379> SDIFFSTORE SET2 SET SET1
(integer) 2
127.0.0.1:6379> SMEMBERS SET2
1) "4"
2) "5"
127.0.0.1:6379> SMEMBERS SET1
1) "1"
2) "2"
3) "3"
127.0.0.1:6379> SMEMBERS SET
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"

5、SINTER 命令


用于返回给定所有集合的交集。

不存在的集合被视为空集,当给定的集合当中有一个时空集时,结果也为空集。

127.0.0.1:6379> SINTER KEY KEY [key ...]

例如,

127.0.0.1:6379> SMEMBERS SET1
1) "1"
2) "2"
3) "3"
127.0.0.1:6379> SMEMBERS SET
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379> SINTER SET SET1
1) "1"
2) "2"
3) "3"

6、SINTERSTORE 命令


用于将给定集合之间的交集存储在指定的集合中。

如果指定的DESTINATION集合已存在,则里面的元素会被覆盖。

127.0.0.1:6379> SINTERSTORE DESTINATION KEY KEY [key ...]

例如,

127.0.0.1:6379> SINTERSTORE SET2 SET SET1
(integer) 3
127.0.0.1:6379> SMEMBERS SET2
1) "1"
2) "2"
3) "3"
127.0.0.1:6379> SMEMBERS SET
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379> SMEMBERS SET1
1) "1"
2) "2"
3) "3"

7、SISMEMBER 命令


用于判断给定的元素是否为指定集合的成员。

如果给定的元素是集合成员,则返回1,如果不是,则返回0。

127.0.0.1:6379> SISMEMBER KEY MEMBER 

例如,

127.0.0.1:6379> SMEMBERS SET
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379> sismember SET 0
(integer) 0
127.0.0.1:6379> sismember SET 1
(integer) 1

8、SMEMBERS 命令


用于返回指定集合中所有的成员。不存在的集合被视为空集。

127.0.0.1:6379> SMEMBERS KEY

例如,

127.0.0.1:6379> SMEMBERS SET
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379> SMEMBERS SE
(empty list or set)

 

9、SMOVE 命令


用于将指定成员元素从SOURCE集合移动到DESTINATION集合中。

并且,SMOVE是原子性操作。

如果SOURCE集合不存在或者不包含指定的元素,则不执行任何操作,返回0。

如果DESTINATION集合中已经包含了指定元素,SMOVE操作将该元素从SOURCE集合中删除。

如果SOURCE与DESTINATION不是集合类型是,则返回一个错误说明。

127.0.0.1:6379> SMOVE SOURCE DESTINATION MEMBER 

例如,

127.0.0.1:6379> SMEMBERS SET
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379> SMEMBERS SET1
1) "1"
2) "2"
3) "3"
127.0.0.1:6379> SMOVE SET SET1 4
(integer) 1
127.0.0.1:6379> SMOVE SET SET1 5
(integer) 1
127.0.0.1:6379> SMOVE SET SET1 6
(integer) 0

10、SPOP 命令


用于随机获取指定集合中的一个或几个元素,并且该元素从集合中删除。

获取的个数由COUNT指定,当指定的个数超过集合的元素个数时,仅返回剩余元素。

当集合为空时,返回空集。COUNT只能为正数,如果是负数,则返回一个错误说明。

127.0.0.1:6379> SPOP KEY [count]

例如,

127.0.0.1:6379> SPOP SET 1
1) "1"
127.0.0.1:6379> SPOP SET 3
1) "2"
2) "3"
127.0.0.1:6379> SPOP SET 3
(empty list or set)
127.0.0.1:6379> SPOP SET -1
(error) ERR index out of range

11、SRANDMEMBER 命令


用于随机获取指定集合中的一个或几个元素但不删除,并且获取的个数由COUNT指定。

如果COUNT是正数,且小于集合基数,则返回COUNT个元素的数组,其中元素内容不重复。

如果COUNT是正数,且大于集合基数,则返回整个集合。

如果COUNT是负数,则返回COUNT个元素的数组,数组中的元素可以重复。

当集合为空时,返回空集。

127.0.0.1:6379> SRANDMEMBER SET [count]

例如,

127.0.0.1:6379> SRANDMEMBER SET 4
1) "9"
2) "8"
3) "5"
4) "6"
127.0.0.1:6379> SRANDMEMBER SET 4
1) "9"
2) "2"
3) "8"
4) "6"
127.0.0.1:6379> SRANDMEMBER SET -2
1) "8"
2) "2"
127.0.0.1:6379> SRANDMEMBER SET -2
1) "2"
2) "5"
127.0.0.1:6379> SRANDMEMBER SET -8
1) "10"
2) "3"
3) "3"
4) "10"
5) "1"
6) "6"
7) "8"
8) "10"

12、SREM 命令


用于删除给定集合中的一个或几个元素,不存在的元素将被忽略。

当KEY不是一个集合时,则返回一个错误说明。

127.0.0.1:6379> SREM KEY MEMBER [member ...]

例如,

127.0.0.1:6379> SMEMBERS SET1) "1"2) "2"3) "3"4) "4"5) "5"6) "6"7) "7"8) "8"9) "9"
10) "10"
127.0.0.1:6379> SREM SET 1 3 5 7 9 11
(integer) 5
127.0.0.1:6379> SMEMBERS SET
1) "2"
2) "4"
3) "6"
4) "8"
5) "10"

13、SUNION 命令


用于返回给定集合的并集。不存在的集合被视为空集。

127.0.0.1:6379> SUNION KEY KEY [key ...]

例如,

127.0.0.1:6379> SUNION SET SET1 SET2
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
7) "8"
8) "10"
127.0.0.1:6379> SMEMBERS SET
1) "2"
2) "4"
3) "6"
4) "8"
5) "10"
127.0.0.1:6379> SMEMBERS SET1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379> SMEMBERS SET2
1) "1"
2) "2"
3) "3"

14、SUNIONSTORE 命令


用于将给定的集合的并集存储在指定的集合DESTINATION中。

如果指定的DESTINATION集合已存在,则里面的元素会被覆盖。

127.0.0.1:6379> SUNIONSTORE DESTINATION KEY KEY [key ...]

例如,

127.0.0.1:6379> SMEMBERS SET2
1) "1"
2) "2"
3) "3"
127.0.0.1:6379> SUNIONSTORE SET2 SET SET1
(integer) 8
127.0.0.1:6379> SMEMBERS SET2
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
7) "8"
8) "10"
127.0.0.1:6379> 

15、SSCAN 命令


SCAN命令及其相关的SSCAN命令、HSCAN命令和ZSCAN命令都用于增量地迭代一集元素。

SSCAN命令用于迭代集合键中的元素。

与SCAN命令类型。

127.0.0.1:6379> sscan SET cursor [MATCH pattern] [COUNT count]

例如,

127.0.0.1:6379> SSCAN SET 0 MATCH *
1) "0"
2) 1) "2"2) "4"3) "6"4) "8"5) "10"
127.0.0.1:6379> SSCAN SET 0 
1) "0"
2) 1) "2"2) "4"3) "6"4) "8"5) "10"

 

转载于:https://www.cnblogs.com/randyma/p/6872486.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/281968.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

fpga mysql_FPGA的一些琐碎知识整理

1.生产FPGA的厂家有:ALTERAXILINXATCELLatticeps:Altera和Xilinx主要生产一般用途FPGA,其主要产品采用SRAM工艺Actel主要提供非易失性FPGA,产品主要基于反熔丝工艺和FLASH工艺ps: 熔丝,顾名思义:把丝熔掉,反…

使用增量备份修复DG中的GAP

问题描述 oracle中DG出现主备不同步现象,alert日志报警有gap信息,但是v$archive_gap视图查不到任何信息。同时主库上的对应归档已经删除且没有备份 解决方案 1.查询备库的scn SQL> select current_scn from v$database; 这时有可能出来的scn是以科学计…

C# 反射类Assembly用法举例

概述程序运行时,通过反射可以得到其它程序集或者自己程序集代码的各种信息,包括类、函数、变量等来实例化它们,执行它们,操作它们,实际上就是获取程序在内存中的映像,然后基于这个映像进行各种操作。Assemb…

团队作业

团队&组员: 没有组名,大概是因为我们组虽然有10个人,但是好像只起到人多的地方就容易开车搞笑,没有内涵,取出来的都是秋名山吴彦组这样的开车组名,在大家的的强烈建议和玩笑中,决定了没有组…

算法系列【希尔排序】篇

常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。用一张图概括:关于时间复杂度:1. 平方阶 (O(n2)) 排序各类简单排序:直接插入、直接选择和冒泡排序。2. 线性对数…

sql查询索引语句_sql优化总结--基于sql语句优化和索引优化

概述最近做查询,统计和汇总。由于数据量比较庞大,大部分表数据上百万,甚至有的表数据上千万。所以在系统中做sql优化比较多,特此写一篇文章总结一下关于sql优化方面的经验。导致查询缓慢的原因1、数据量过大2、表设计不合理3、sql…

电商行业运维实践

电商行业运维实践--------------------…

数据结构小总结(成都磨子桥技工学校数据结构前12题)

[pixiv] https://www.pixiv.net/member_illust.php?modemedium&illust_id34352147 暑假的作业,颓颓的我总算是写完了 线段树 线段树是一个高级玩意,不仅可以求区间和,区间最大等等的简单问题,灵活运用还有好多变种。自从学…

【九章算法免费讲座第一期】转专业找CS工作的“打狗棒法”

讲座时间: 美西时间6月5日18:30-20:00(周五) 北京时间6月6日09:30-11:00(周六a.m) 讲座安排: 免费在线直播讲座 报名网址: http://t.cn/R2XgMSH&a…

golang mysql 防注入_Go,Gorm 和 Mysql 是如何防止 SQL 注入的

Go,Gorm 和 Mysql 是如何防止 SQL 注入的SQL 注入和 SQL 预编译技术什么是 SQL 注入所谓SQL注入(sql inject),就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说&#xff…

wav2midi 音乐旋律提取算法 附可执行demo

前面提及过,音频指纹算法的思路。 也梳理开源了两个比较经典的算法。 https://github.com/cpuimage/shazam https://github.com/cpuimage/AudioFingerprinter 后来一段时间,稍微看了下这两个算法,还有不少可以精简优化的空间。 例如抗噪&…

全新升级的AOP框架Dora.Interception[5]: 实现任意的拦截器注册方式

Dora.Interception提供了两种拦截器注册方式,一种是利用标注在目标类型、属性和方法上的InterceptorAttribute特性,另一种采用基于目标方法或者属性的调用表达式。通过提供的扩展点,我们可以任何我们希望的拦截器注册方式。目录一、IIntercep…

SCAU 算法课的题

8594 有重复元素的排列问题(优先做) 时间限制:1000MS 内存限制:1000K提交次数:1610 通过次数:656 题型: 编程题 语言: G;GCC;VC Description 设集合R{r1,r2,...,rn}是要进行排列的n个元素,其中r1,r2,...,rn可能相同。 试着设计一个算法&am…

react 数组新增_React 新特性 Hooks 讲解及实例(二)

本文是 React 新特性系列的第二篇,第一篇请点击这里:React 新特性讲解及实例什么是 HooksHook 是 React 16.8 的新增特性。它可以让你在不编写 类组件 的情况下使用 state以及其他的 React 特性。类组件的不足状态逻辑复用难缺少复用机制渲染属性和高阶组…

智课雅思词汇---二十二、-al即是名词性后缀又是形容词后缀

智课雅思词汇---二十二、-al即是名词性后缀又是形容词后缀 一、总结 一句话总结: 后缀:-al ②[名词后缀] 1、构成抽象名词,表示行为、状况、事情 refusal 拒绝 proposal 提议 withdrawal 撤退 1、名词性后缀acy是什么意思? 后缀&a…

javascript事件处理程序

javascript 事件处理程序 1、普通事件处理程序 <input type"button" value"click me" οnclick"showMessage()" /> function showMessage(){alert("clicked");} 2、DOMO 级事件处理程序 <span style"white-space:pre&…

eclipse新发现功能之dos和terminal(ssh连接)

dos功能&#xff1a; window——》show view——》other——》remote systems&#xff0c;选择remote shell&#xff0c;选择确定或者双击&#xff0c;打开了一个新工具窗口。点击remote shell窗口最右上角的小三角&#xff0c;在launch子菜单中选择local&#xff0c;点击即可。…

7天学会python_7天学会Python最佳可视化工具Seaborn(五):结构化展示多维数据

当探索具有中等数量(不多不少的意思……)维度的数据集时&#xff0c;一个很好的方式是基于不同的子数据集构建不同的实例&#xff0c;并将它们以网格的方式组织在一张图之中。这种技术有时被称为“lattice”或“trellis”(大概是格子图、网格图)&#xff0c;这跟“small multip…

面对峰值响应冲击,解决高并发的三大策略

2019独角兽企业重金招聘Python工程师标准>>> 当前在互联网的大潮下&#xff0c;众所周知淘宝、京东这些交易系统每天产生的数据量都是海量的&#xff0c;每天的交易并发也是惊人的&#xff0c;尤其是“双11”、“6.18”这些活动&#xff0c;对系统的峰值响应提出了非…

.NET 采用 SkiaSharp 生成二维码和图形验证码及图片进行指定区域截取方法实现

在最新版的 .NET 平台中&#xff0c;微软在逐步放弃 System.Drawing.Imaging &#xff0c;给出的理由如下&#xff1a;System.Drawing命名空间对某些操作系统和应用程序类型有一些限制。在Windows&#xff0c; System.Drawing 依赖于GDI操作系统附带的本机库。 某些Windows SKU…