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 ...
随机推荐
- destoon手机端分页
$pages = ''; $pagesize = 2; $offset = ($page-1)*$pagesize; $rr = $db->get_one("SELECT COUNT( ...
- 2018面向对象程序设计(Java)第4周学习指导及要求
2018面向对象程序设计(Java) 第4周学习指导及要求(2017.9.19-2017.9. 26) 学习目标 掌握类与对象的基础概念,理解类与对象的关系: 掌握对象与对象变量的关系: 掌握预定 ...
- vuejs 组件通讯
在应用复杂时,推荐使用vue官网推荐的vuex,以下讨论简单SPA(single-page application 简称为 SPA)中的组件间传值. 一.路由传值 路由对象如下图所示: 在跳转页面的时 ...
- Python基础之初始编码
前言 程序中的编码问题你不搞明白,那么你的程序生涯中它会像幽灵一样伴随着你的职业生涯. 首先要搞清楚一个概念:计算机中认识什么?它认识的是010101这种二进制,却不认识中文不认识英文 那么,这个时候 ...
- 《深入理解java虚拟机》笔记
二.java内存区域与内存溢出异常 0.在内存管理领域,java与c/c++不同的是,在java虚拟机自动内存管理机制下,java不需要手动去为对象写配对的free内存的代码,不容易出现内存泄漏和内存 ...
- 数值的整数次方(python)
题目描述 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. # -*- coding:utf-8 -*- class Solution: ...
- 二维背包 hdu2159
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2159 题目里面有两个限制条件,忍耐度和杀怪数量,所以可以用一个二维数组dp[i][j]来表示在消耗忍耐 ...
- python爬虫相关基础概念
什么是爬虫 爬虫就是通过编写程序模拟浏览器上网,然后让其去互联网上抓取数据的过程. 哪些语言可以实现爬虫 1.php:可以实现爬虫.但是php在实现爬虫中支持多线程和多进程方面做得不好. 2.java ...
- TOJ 5225: 玩转二叉树
传送门:http://acm.tzc.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=5225 时间限制(普通/Java): ...
- Python+Selenium学习--简单对象定位
场景 测试对象的定位和操作是webdriver的核心内容,其中操作又是建立在定位的基础之上,因此对象定位就越发显得重要了. 定位对象的目的一般有下面几种 操作对象 获得对象的属性,如获得测试对象的cl ...