redis 数据类型为string命令整理以及示例
#设置值
SET key value [EX seconds] [PX milliseconds] [NX|XX]
SET
命令加上选项已经可以完全取代SETNX, SETEX, PSETEX的功能,所以在将来的版本中,redis可能会不推荐使用并且最终抛弃这几个命令。
所以我依次介绍下set的不同模式,实例中GET获取String值不再介绍。
#第一种常规
127.0.0.1:6379> set Current 2018-03-04
OK
127.0.0.1:6379> get Current
"2018-03-04"
#设置有生存时间的key
#将CurrentHaveTimeOut设置为120s的生成时间
127.0.0.1:6379> set CurrentHaveTimeOut test Ex 120
OK
#查看时间,还有108s会被删除
127.0.0.1:6379> ttl CurrentHaveTimeOut
(integer) 108
#过了2分钟再次获取
127.0.0.1:6379> get CurrentHaveTimeOut
(nil)
#设置为仅当key不存在的时候才能设置
127.0.0.1:6379> set CurrentHaveNx test NX
OK
#再次重复设置
127.0.0.1:6379> set CurrentHaveNx test NX
(nil)
#和NX相反的是XX,仅有key存在的时候才能修改
#值不存在的时候设置失败
127.0.0.1:6379> set CurrentHaveXx test XX
(nil)
#设置值
127.0.0.1:6379> set CurrentHaveXx test1
OK
#进行XX模式修改重设成功
127.0.0.1:6379> set CurrentHaveXx test XX
OK 127.0.0.1:6379> get CurrentHaveXx
"test"
#tips:NX模式可用来制作redis锁。依赖的就是用NXSET来判断锁是否存在
#给String追加值
APPEND key value
如果 key
已经存在,并且值为字符串,那么这个命令会把 value
追加到原来值(value)的结尾。 如果 key
不存在,那么它将首先创建一个空字符串的key
,再执行追加操作
127.0.0.1:6379> EXISTS key
(integer) 0
127.0.0.1:6379> APPEND key gavin
(integer) 5
127.0.0.1:6379> get key
"gavin"
127.0.0.1:6379> APPEND key jun
(integer) 8
127.0.0.1:6379> get key
"gavinjun"
#指定位置字符串替换
SETRANGE key offset value
这个命令的作用是覆盖key对应的string的一部分,从指定的offset处开始,覆盖value的长度。如果offset比当前key对应string还要长,那这个string后面就补0以达到offset。不存在的keys被认为是空字符串,所以这个命令可以确保key有一个足够大的字符串,能在offset处设置value。
#情况一正常情况,offset不超过长度
127.0.0.1:6379> set key1 "hello world!"
OK
127.0.0.1:6379> get key1
"hello world!"
127.0.0.1:6379> SETRANGE key1 6 redis
(integer) 12
127.0.0.1:6379> get key1
"hello redis!"
#情况二 String不存在,和存在但是offset大于字符串长度
#不存在的情况,会进行补0操作
127.0.0.1:6379> SETRANGE key2 3 test
(integer) 7
127.0.0.1:6379> get key2
"\x00\x00\x00test" #offset大于字符串长度,情况和上面类似,都是前补0 127.0.0.1:6379> set key3 t
OK
127.0.0.1:6379> get key3
"t"
127.0.0.1:6379> SETRANGE key3 3 go
(integer) 5
127.0.0.1:6379> get key3
"t\x00\x00go"
#获取key的字符串长度
STRLEN key
返回key的string类型value的长度。如果key对应的非string类型,就返回错误。
127.0.0.1:6379> STRLEN key3
(integer) 5 #举例一种非string类型的情况 127.0.0.1:6379> LPUSH list 1
(integer) 1
127.0.0.1:6379> LRANGE list 0 -1
1) "1"
127.0.0.1:6379> STRLEN list
(error) WRONGTYPE Operation against a key holding the wrong kind of value #当key不存在的情况返回0 127.0.0.1:6379> STRLEN key4
(integer) 0
#将自增自减和GETSET先获取后重置放一起介绍
INCR key
对存储在指定key
的数值执行原子的加1操作。
如果指定的key不存在,那么在执行incr操作之前,会先将它的值设定为0
。
如果指定的key中存储的值不是字符串类型(fix:)或者存储的字符串类型不能表示为一个整数,
那么执行这个命令时服务器会返回一个错误(eq:(error) ERR value is not an integer or out of range)。
这个操作仅限于64位的有符号整型数据
#情况1key不存在,会从0自增 127.0.0.1:6379> INCR key5
(integer) 1
127.0.0.1:6379> get key5
"1" #情况2key不可以转成整数 127.0.0.1:6379> set key7 test
OK
127.0.0.1:6379> INCR key7
(error) ERR value is not an integer or out of range #情况3key是浮点数,结果和上面一致 127.0.0.1:6379> set key6 3.1
OK
127.0.0.1:6379> INCR key6
(error) ERR value is not an integer or out of range #情况4正常情况 127.0.0.1:6379> set key4 1
OK
127.0.0.1:6379> get key4
"1"
127.0.0.1:6379> INCR key4
(integer) 2
127.0.0.1:6379> get key4
"2"
DECR key
对key对应的数字做减1操作。如果key不存在,那么在操作之前,这个key对应的值会被置为0。如果key有一个错误类型的value或者是一个不能表示成数字的字符串,就返回错误。这个操作最大支持在64位有符号的整型数字。
#不做描述,情景和自增INCR一致
GETSET key value
自动将key对应到value并且返回原来key对应的value。如果key存在但是对应的value不是字符串,就返回错误。
127.0.0.1:6379> INCR key8
(integer) 1 127.0.0.1:6379> GETSET key8 2
"1"
127.0.0.1:6379> get key8
"2"
#批量设置和获取 略,和set类似。具体可以查看redis手册
redis 数据类型为string命令整理以及示例的更多相关文章
- redis 数据类型为set命令整理以及示例
数据类型为set.可以保证set内数据唯一.场景:生成订单号,因为要求订单号是绝对不能重复的,所以数据库中要设置为unique索引.但是其实可以通过redis,set来做每天的订单集合.比如A客户的订 ...
- redis 数据类型为list命令整理以及示例
常用来制作队列,当然lpush+rpop也能做栈 #将RPUSH RPUSHX LPUSH LPUSHX一并介绍(具体介绍RPUSH和RPUSHX,因为其实就是插入的方向的区别) RPUSH key ...
- Redis数据类型和常用命令
Redis相较于其它的数据库虽然简单,但是要熟记所有命令的用法也并非易事.一个简单的技巧是通过要操作的数据类型来将这些命令进行结构化. 数据类型和对应命令 所有存储于redis中的数据都对应于一个键值 ...
- redis数据类型:String
redis数据类型:String 花开堪折直需折,莫待无花空折枝 实际应用中有多种多样的场景,比如: 秒杀 新闻热点 在线人数 session.token管理 各个场景需要的数据类型各不相同:常见的数 ...
- redis笔记总结之redis数据类型及常用命令
三.常用命令 3.1 字符串类型(string) 字符串类型是Redis中最基本的数据类型,一个字符串类型的键允许存储的数据的最大容量为512MB. 3.1.1 赋值与取值: SET key valu ...
- redis数据类型及常用命令使用
redis干啥的,一般人都知道,但很多人只知道是个缓存数据库,其它的就不知道了,本猿无能亦是如此,然知耻而后勇,我们该理一理这里边的一些逻辑,看看redis究竟是怎么一回事儿,能干啥,怎么做的,这样才 ...
- 带你掌握Redis数据类型:string和Hash
摘要:Redis中有五大数据类型,分别是String.List.Set.Hash和Zset. 本文分享自华为云社区<Redis的string类型常用命令解析>,作者:灰小猿 . 先问大家一 ...
- redis数据类型及常用命令介绍(图文实例)
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAhgAAAFLCAYAAACUdvXUAAAgAElEQVR4nO3da1da58L2fT5KfPvc96 ...
- redis数据类型之—String
(1)String 简单介绍 string是redis中最基本的数据类型,一个字符串类型的值存储的最大容量是1GB. (2)String 常用命令
随机推荐
- C++ : 窗口变化相关消息 OnSize、OnSizing和OnGetMinMaxInfo,onsizeonsizing
个消息分别是:WM_SIZE.WM_SIZING.WM_GETMINMAXINFO:分别对应相应的处理函数:OnSize.OnSizing.OnGetMinMaxInfo. 当窗口大小发生变化时,响应 ...
- 三种方式监听NGUI的事件方法
NGUI研究院之三种方式监听NGUI的事件方法(七) NGUI事件的种类很多,比如点击.双击.拖动.滑动等等,他们处理事件的原理几乎万全一样,本文只用按钮来举例. 1.直接监听事件 把下面脚本直接绑定 ...
- idea git 发起一个pull request 请求
- Signing Your Applications(Android签名相关)
In this document Signing Overview Signing in Debug Mode Signing in Release Mode Signing Android Wear ...
- Pandas分类
Pandas分类 categorical data是指分类数据:数据类型为:男女.班级(一班.二班).省份(河北.江苏等),若使用赋值法给变量赋值,例如(男=1,女=0),数字1,0之间没有大小之分, ...
- spring 解耦
spring之后不用在类中new一个实体,而是在类中申明接口类:当真正使用的时候是注入相应的实现类,要什么类注入申明类:那么这样就面向接口编程了:耦合度大大降低: 同时spring有面向切面编程,其实 ...
- 安装 Java Cryptography Extension (JCE) Unlimited Strength
http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html cp ./* /usr/java/ ...
- 2018面向对象程序设计(Java)第10周学习指导及要求
2018面向对象程序设计(Java)第10周学习指导及要求(2018.11.1-2018.11.4) 学习目标 理解泛型概念: 掌握泛型类的定义与使用: 掌握泛型方法的声明与使用: 掌握泛型接口的定 ...
- com.google.gson.stream.MalformedJsonException
今天下午项目更新后,调用接口时,提示“请求失败”,发现项目网络框架解析时,报错如下:com.google.gson.stream.MalformedJsonException: Unterminate ...
- Linux 设置Redis开机启动
Debian 也就是Ubun16.04 亲测可用 http://www.tuicool.com/articles/UR73ieq Centos7.0 http://blog.csdn.net/alex ...