数据类型为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命令整理以及示例的更多相关文章

  1. redis 数据类型为string命令整理以及示例

    #设置值 SET key value [EX seconds] [PX milliseconds] [NX|XX] SET命令加上选项已经可以完全取代SETNX, SETEX, PSETEX的功能,所 ...

  2. redis 数据类型为list命令整理以及示例

    常用来制作队列,当然lpush+rpop也能做栈 #将RPUSH RPUSHX LPUSH LPUSHX一并介绍(具体介绍RPUSH和RPUSHX,因为其实就是插入的方向的区别) RPUSH key ...

  3. Redis数据类型和常用命令

    Redis相较于其它的数据库虽然简单,但是要熟记所有命令的用法也并非易事.一个简单的技巧是通过要操作的数据类型来将这些命令进行结构化. 数据类型和对应命令 所有存储于redis中的数据都对应于一个键值 ...

  4. redis笔记总结之redis数据类型及常用命令

    三.常用命令 3.1 字符串类型(string) 字符串类型是Redis中最基本的数据类型,一个字符串类型的键允许存储的数据的最大容量为512MB. 3.1.1 赋值与取值: SET key valu ...

  5. redis数据类型及常用命令介绍(图文实例)

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAhgAAAFLCAYAAACUdvXUAAAgAElEQVR4nO3da1da58L2fT5KfPvc96 ...

  6. redis数据类型及常用命令使用

    redis干啥的,一般人都知道,但很多人只知道是个缓存数据库,其它的就不知道了,本猿无能亦是如此,然知耻而后勇,我们该理一理这里边的一些逻辑,看看redis究竟是怎么一回事儿,能干啥,怎么做的,这样才 ...

  7. Redis数据类型、两种模型、事务、内部命令

    1.redis数据类型 a.字符串,使用场景:常规key-value缓存应用 set name lixiang get name append name 123 # 字符串追加 mset key va ...

  8. Redis 基础及各数据类型对应的命令

    Redis 命令文档 基本概念 安装及使用 可以在官网下载源码编译安装.对于 CentOS,还可以通过 yum install redis 安装. Redis 安装完成后,通过 redis-serve ...

  9. Redis学习之二 数据类型和相关命令

    原文:https://www.cnblogs.com/lonelyxmas/p/9073928.html 如果还不懂安装的,请看 Windows环境下安装Redis Redis一共支持五种数据类型 1 ...

随机推荐

  1. java.lang.UnsupportedClassVersionError 异常

    运行的JDK版本和开发环境的版本不一致导致 解决办法:更换运行环境的JDK版本,使其与运行环境一致.

  2. 基于WebQQ3.0协议写一个QQ机器人

    最近公司需要做个qq机器人获取qq好友列表,并且能够自动向选定的qq好友定时发送消息.没有头绪,硬着头皮上 甘甜的心情瞬间变得苦涩了 哇 多捞吆 1.WEBQQ3.0登陆协议 进入WEBQQ, htt ...

  3. Html写作规范

    HTML是描述网页结构的超文本标记语言,HTML规范能够使HTML代码风格保持一致,使得HTML更容易理解和维护. 整体结构 用编辑器快捷键一键搞定 <!DOCTYPE html>---- ...

  4. spring .cloud ------------java.lang.RuntimeException: com.netflix.client.ClientException,Caused by: java.lang.IllegalArgumentException: MIME type may not contain reserved characters

    1.问题的发生 Feign在默认情况下使用的是JDK原生的URLConnection发送HTTP请求,没有连接池,但是对每个地址会保持一个长连接,即利用HTTP的persistence connect ...

  5. pandas.DataFrame.to_excel

    1. file_name = 'aa.xlsx' df.to_excel(file_name) #这种file_name不能重复,已经生成过的就会报错 writer = pd.ExcelWriter( ...

  6. node-pre-gyp install --fallback-to-build 错误

    [node-pre-gyp install --fallback-to-build 错误] npm install bcrypt时遇上错误 此时,安装node-gyp npm install -g n ...

  7. C#之代码优化

    1.if和swith: 区别:1.if语句会执行多次判断,增加CPU的消耗,效率较低:switch只判断一次,效率较高 2.if表示的是一个范围,switch表示一个点 2.for和foreach f ...

  8. 安装FP

    一.安装Oracle 11.2 64-bit数据库 1.安装数据库软件并将SEINESCM数据库还原到服务器上, 2.配置监听和TNS信息 二.安装数据库32位客户端(为SSIS配套使用).安装ORA ...

  9. 解题5(StringMerge1)

    题目描述 按照指定规则对输入的字符串进行处理. 详细描述: 将输入的两个字符串合并. 对合并后的字符串进行排序,要求为:下标为奇数的字符和下标为偶数的字符分别从小到大排序.这里的下标意思是字符在字符串 ...

  10. linux 切割文件的命令

    Head -1000 access.2016.log >> 10000_access.log