redis 数据类型为set命令整理以及示例
数据类型为set。可以保证set内数据唯一。场景:生成订单号,因为要求订单号是绝对不能重复的,所以数据库中要设置为unique索引。但是其实可以通过redis,set来做每天的订单集合。比如A客户的订单号201803041,B客户并发了相同的订单号,但是A客户插入了set集合,B客户插入就会返回0,表示重复,需要再次生成,一定程度上减少了数据库unique的验证。
#添加到set集合中
SADD key member [member ...]
添加一个或多个指定的member元素到集合的 key中.指定的一个或者多个元素member 如果已经在集合key中存在则忽略.如果集合key 不存在,则新建集合key,并添加member元素到集合key中.
如果key 的类型不是集合则返回错误.
127.0.0.1:6379> SADD set 1 2 3 3 4 4
(integer) 4
127.0.0.1:6379> SMEMBERS set
1) "1"
2) "2"
3) "3"
4) "4"
#如果想知道set集合的大小可以使用命令scard
SCARD key
127.0.0.1:6379> SCARD set
(integer) 4
#如果想比较集合。命令有sdiff,sdiffstore,sinter,sinterstore,sunion,sunionstore
SDIFF key [key ...]
返回一个集合与给定集合的差集的元素.
127.0.0.1:6379> SADD set1 a
(integer) 1
127.0.0.1:6379> SADD set2 a
(integer) 1 #两个相同的集合或者都是空集合比较
127.0.0.1:6379> SDIFF set1 set2
(empty list or set) #有差值的情况
127.0.0.1:6379> SADD set1 b
(integer) 1
127.0.0.1:6379> SDIFF set1 set2
1) "b"
SDIFFSTORE destination key [key ...]
该命令类似于 SDIFF, 不同之处在于该命令不返回结果集,而是将结果存放在destination
集合中.
如果destination
已经存在, 则将其覆盖重写.可以理解为将比较差集后的结果保存到新的目标集合
127.0.0.1:6379> SDIFF set1 set2
1) "b"
127.0.0.1:6379> SDIFFSTORE set3 set1 set2
(integer) 1
127.0.0.1:6379> SMEMBERS set3
1) "b"
SINTER key [key ...]
返回指定所有的集合的成员的交集.官方实例解释
key1 = {a,b,c,d}
key2 = {c}
key3 = {a,c,e}
SINTER key1 key2 key3 = {c}
127.0.0.1:6379> SINTER set1 set2
1) "a"
SINTERSTORE destination key [key ...]
和sdiffstore效果类似。将交集写到新的集合。如果集合存在则覆盖重写。
SUNION key [key ...]
返回给定的多个集合的并集中的所有成员.
例如:
key1 = {a,b,c,d}
key2 = {c}
key3 = {a,c,e}
SUNION key1 key2 key3 = {a,b,c,d,e}
#如果需要判断值是否在集合中可以使用命令:sismember
SISMEMBER key member
返回成员 member 是否是存储的集合 key的成员.
##返回值
- 如果member元素是集合key的成员,则返回1
- 如果member元素不是key的成员,或者集合key不存在,则返回0
#返回key集合所有的元素.在上面实例中已经使用。
SMEMBERS key
返回key集合所有的元素.
该命令的作用与使用一个参数的SINTER 命令作用相同.
SMOVE source destination member
将member从source集合移动到destination集合中. 对于其他的客户端,在特定的时间元素将会作为source或者destination集合的成员出现.
如果source 集合不存在或者不包含指定的元素,这smove命令不执行任何操作并且返回0.否则对象将会从source集合中移除,并添加到destination集合中去,如果destination集合已经存在该元素,则smove命令仅将该元素充source集合中移除. 如果source 和destination不是集合类型,则返回错误.
127.0.0.1:6379> SADD test4 1 2
(integer) 2
127.0.0.1:6379> SADD test5 3
(integer) 1
127.0.0.1:6379> SMOVE test4 test5 2
(integer) 1
127.0.0.1:6379> SMEMBERS test4
1) "1"
127.0.0.1:6379> SMEMBERS test5
1) "2"
2) "3"
#如果你想弹出集合中的值可以使用spop。
SPOP key [count]
是随机位置弹出set中的值。count计数与redis版本有关
127.0.0.1:6379> SADD test6 1 2 3 4 6 5 7 8 9 10
(integer) 10
127.0.0.1:6379> SPOP test6 3
1) "1"
2) "5"
3) "10"
127.0.0.1:6379> SMEMBERS test6
1) "2"
2) "3"
3) "4"
4) "6"
5) "7"
6) "8"
7) "9"
#随机返回set中指定个数的值
SRANDMEMBER key [count]
仅提供key参数,那么随机返回key集合中的一个元素.
Redis 2.6开始, 可以接受 count 参数,如果count是整数且小于元素的个数,返回含有 count 个不同的元素的数组,如果count是个整数且大于集合中元素的个数时,仅返回整个集合的所有元素,当count是负数,则会返回一个包含count的绝对值的个数元素的数组,如果count的绝对值大于元素的个数,则返回的结果集里会出现一个元素出现多次的情况.
仅提供key参数时,该命令作用类似于SPOP命令, 不同的是SPOP命令会将被选择的随机元素从集合中移除, 而SRANDMEMBER仅仅是返回该随记元素,而不做任何操作.
127.0.0.1:6379> SADD set7 1 2 3 4 5
(integer) 5
127.0.0.1:6379> SRANDMEMBER set7
"4"
127.0.0.1:6379> SRANDMEMBER set7 3
1) "1"
2) "2"
3) "4"
127.0.0.1:6379> SRANDMEMBER set7 10
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379> SRANDMEMBER set7 -10
1) "4"
2) "2"
3) "1"
4) "2"
5) "5"
6) "4"
7) "1"
8) "3"
9) "3"
10) "1"
#移除集合中某个值
SREM key member [member ...]
在key集合中移除指定的元素. 如果指定的元素不是key集合中的元素则忽略 如果key集合不存在则被视为一个空的集合,该命令返回0.
如果key的类型不是一个集合,则返回错误.
127.0.0.1:6379> SMEMBERS set7
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379> SREM set7 2
(integer) 1
127.0.0.1:6379> SMEMBERS set7
1) "1"
2) "3"
3) "4"
4) "5"
redis 数据类型为set命令整理以及示例的更多相关文章
- redis 数据类型为string命令整理以及示例
#设置值 SET key value [EX seconds] [PX milliseconds] [NX|XX] SET命令加上选项已经可以完全取代SETNX, SETEX, PSETEX的功能,所 ...
- redis 数据类型为list命令整理以及示例
常用来制作队列,当然lpush+rpop也能做栈 #将RPUSH RPUSHX LPUSH LPUSHX一并介绍(具体介绍RPUSH和RPUSHX,因为其实就是插入的方向的区别) RPUSH key ...
- Redis数据类型和常用命令
Redis相较于其它的数据库虽然简单,但是要熟记所有命令的用法也并非易事.一个简单的技巧是通过要操作的数据类型来将这些命令进行结构化. 数据类型和对应命令 所有存储于redis中的数据都对应于一个键值 ...
- redis笔记总结之redis数据类型及常用命令
三.常用命令 3.1 字符串类型(string) 字符串类型是Redis中最基本的数据类型,一个字符串类型的键允许存储的数据的最大容量为512MB. 3.1.1 赋值与取值: SET key valu ...
- redis数据类型及常用命令介绍(图文实例)
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAhgAAAFLCAYAAACUdvXUAAAgAElEQVR4nO3da1da58L2fT5KfPvc96 ...
- redis数据类型及常用命令使用
redis干啥的,一般人都知道,但很多人只知道是个缓存数据库,其它的就不知道了,本猿无能亦是如此,然知耻而后勇,我们该理一理这里边的一些逻辑,看看redis究竟是怎么一回事儿,能干啥,怎么做的,这样才 ...
- Redis数据类型、两种模型、事务、内部命令
1.redis数据类型 a.字符串,使用场景:常规key-value缓存应用 set name lixiang get name append name 123 # 字符串追加 mset key va ...
- Redis 基础及各数据类型对应的命令
Redis 命令文档 基本概念 安装及使用 可以在官网下载源码编译安装.对于 CentOS,还可以通过 yum install redis 安装. Redis 安装完成后,通过 redis-serve ...
- Redis学习之二 数据类型和相关命令
原文:https://www.cnblogs.com/lonelyxmas/p/9073928.html 如果还不懂安装的,请看 Windows环境下安装Redis Redis一共支持五种数据类型 1 ...
随机推荐
- BlurZoomGallery一个完美下拉进入大图模式
BlurZoomGallery一个完美的Gallery和view的事件处理,下拉放大的时候gallery不断的在添加高度,gallery效果在放大,实现下拉进入大图模式,view滑动事件和galler ...
- C# 递归获取 文件夹的 所有文件
public void Director(string dir, List<string> list) { DirectoryInfo d = new DirectoryInfo(dir) ...
- FTP原理和虚拟用户映射登录-2019.2.8
FTP主动模式和被动模式 FTP(File Transfer Protocol)是文件传输协议的简称.正如其名所示:FTP的主要作用,就是让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序 ...
- java-学习2
第一节 Java语言介绍 1.Java的起源 Oak-->Java 交互式操作智能家居 2.Java的发展 Java1.0 Java1.2 JavaSE :Java平台标准版 ...
- 阿里大于发送短信(java)
一.短信签名设置 1.短信签名是什么? 签名是在短信内容开始或者末尾跟的品牌或者应用名称,设置签名有一下几个好处:增加品牌的曝光度,增强用户的记忆让用户能更清楚的知道正在使用的应用. 2.签名可不可以 ...
- Java的学习02
今天依旧记录一下今天的学习的知识. /** * 测试StringBuilder StringBuffer,可变字符序列 * String对象称为“不可变对象"指的是对象内部成员变量的值无法再 ...
- Feign 注意事项
一.FeignClient注解 FeignClient注解被@Target(ElementType.TYPE)修饰,表示FeignClient注解的作用目标在接口上 1 2 3 4 5 @FeignC ...
- iftop网络流量查看工具
1.下载iftop源码包 mkdir /usr/local/src/iftop cd /usr/local/src/iftop wget http://www.ex-parrot.com/~pdw/i ...
- spring读取工程外配置文件
因为生产和开发测试的环境不同,所以有时候需要把properties文件放在包外方便修改配置. spring配置文件如下: <context:property-placeholder locati ...
- linux系统修改系统时间与时区
有装过Linux系统的人,可能都会有这样的经历,就是该机器安装windows系统时,时间正确,但是安装了linux系统后,尽管时区选择正确,也会发现系统时间不对.这是由于安装系统时采用了UTC,那么什 ...