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 ...
随机推荐
- mysql 远程 ip访问
默认情况下Linux内的mysql数据库mysql,user表内的用户权限只是对localhost即本机才能登陆.需要更改权限: 如下的方式确认: root#mysql -h localhost-u ...
- 解决在.NET 4.0下无法发送包含尖括号等请求的问题
今天在做一个简单的数据添加时,使用jQuery的ajax的post操作,发现如果包含尖括号等html格式数据的请求无法发给服务端. 以往的做法就是在页面中或web.config中的pages节点中增加 ...
- C# WInForm中 窗体的this.width和this.height的属性值不能大于显示器的最大分辨率
最近在做一个小项目的时候,发现在 1680x1050 分辨率显示器上写的代码,将窗体的宽度和高度 设置成了 1600×900,在高于1600×900的分辨率上缩放显示很正常, 而后转移到 分辨率低于 ...
- 吴裕雄 09-MySQL删除数据表
以下为删除MySQL数据表的通用语法:DROP TABLE table_name; DROP TABLE runoob_tbl; 使用PHP脚本删除数据表PHP使用 mysqli_query 函数来删 ...
- java中Integer和int的区别(转)
int和Integer的区别 1.Integer是int的包装类,int则是java的一种基本数据类型 2.Integer变量必须实例化后才能使用,而int变量不需要 3.Integer实际是对象的引 ...
- Python基础学习Day3 数据类型的转换、int、str、bool、字符串的常用方法、for循环
一.数据类型的转换 常用的是:int 转str.str转int.int转bool 时 非零即为 True . # 数据类型之间转换 ***** # int <--> str str(i ...
- workerman channel组件集群推送
<?phpuse Workerman\Worker; require_once '../../web/Workerman/Autoloader.php';require_once '../../ ...
- supervisord 进程管家
s supervisor supervisor管理进程,是通过fork/exec的方式将这些被管理的进程当作supervisor的子进程来启动,所以我们只需要将要管理进程的可执行文件的路径添加到sup ...
- c#中连接数据库
配置文件web.config: <connectionStrings> <add name="eport" connectionString="Data ...
- python随笔 join 字典,列表的清空 set集合 以及深浅拷贝(重点..难点)
一,字符串和列表的转换 1.str中的 join 方法: 把列表转换成字符串 # 将列表转换成字符串. 每个元素之间用_连接 s = '**'.join(['李启政',' 郑强' , '孙福来']) ...