Redis学习与实战之字符串命令

字符串命令

一、基本字符串命令

1.基本字符串操作命令(设置、取值、删除、取长度)
命令名称命令功能执行时间复杂度
Set为指定的一个键设置对应的值,如果已经存在,则直接覆盖原来的值O(1)
Mset对多个键设置对应的值,如果值已经存在,则直接覆盖原来的值。该命令是原子操作O(n)
MSetNX对多个键设置对应的值,该命令不允许指定的任何一个键已经存在,如果其中有一个键已经存在,则该命令执行失败O(n)
Get得到一个指定键的字符串值,如果键不存在,则返回nil;如果值不是字符串则返回一个错误信息,因为该命令只能处理String类型的值O(1)
MGet得到所有指定键的字符串值,与Get区别是可以同时指定多个键,同时获取多个值O(n)
Del删除指定键的值O(1)
StrLen获取指定键的长度O(1)

①Set命令
语法:Set key value [EX seconds][PX milliseconds][NX|XX]
参数说明:key value 是字符串键和值,必选项;EX是设置到期时间(单位:秒)
PX(单位:毫秒);NX,如果指定的键不存在,仅仅是建立键名;XX,只有键存在时,才可以设置对应的值;

说明:Redis所有操作命令,语法带有”[“和”]”符号时,意味着括号内的参数是可选的,不是必填的。

例:

set bookName  "《Redis学习与实践》"   //设置键名为bookName,值为《Redis学习与实践》
OK    //返回值
set bookName "《NoSQL数据库》" EX 1    //设置bookName 1秒后过期
OK      //返回值

②MSet命令
语法:MSet key value [key value …]
参数说明:key为指定需要设置的字符串键,value为对应的值,可以同时设置多个键值对;返回值总是OK,因为该命令执行不会失败
例:

MSet bookName1 "数据库学习"  bookName2  "MongoDB" //同时设置多个键值对
OK    //返回值

③MSetNX命令
语法:MSetNX key value [key value …]
参数说明:key是指定设置的键,value为对应的值。返回值:如果所有的键都被设置值,返回1;如果有键没有设置成功,则返回0
例:

MSetNX bookID1 1001 bookID2 1002 bookID3 1003
(integer) 1  //三个键都设置成功,返回1MSetNX bookID1 1001 bookID4 1004 
(integer) 0     //bookID1 已经存在,设置失败,所以会返回0```
④Get命令
例:

Get bookID1
1001 //返回值
Get bookID5
nil //键不存在,返回nil

⑤MGet命令
语法:MGet key [key ...]
参数说明:key是键名,可以指定多个键。
返回值:返回所有指定键对应的值,以列表的形式显示,不是String值或不存在返回nil,所有该命令不会返回执行失败信息。
例:

MGet bookName1 bookName2 bookName //同时获取3个键的值
1)”数据库学习”
2)”MongoDB”
3) nil //因为前面设置了bookName过期时间为1秒,所以键已经过期,返回nil

⑥Del命令
语法:Del key [key ...]
参数说明:key是指定要删除的键,允许一次删除多个。
返回值:被删除键的个数。
例:

Set FirstName Tomcat
ok
Set SecondName “Tomcat2”
ok
Get FirstName
“Tomcat”
get secondName
“Tomcat2”
del FristName SecondName //一次删除两个键
(integer) 2 //删除成功 返回 2
get FirstName
nil

>说明:del还可以删除其他类型的数据结构,如列表、集合、哈希等。⑦StrLen命令
语法:StrLen key
返回值:返回字符串的长度;如果键不存在,返回0;
例:

set name “李思”
ok
STRLEN name
(integer) 4 //一个汉字2个字节
STRLEN sex
0 //键不存在,返回0


####二、修改值字符串操作命令|命令名称|命令功能|执行时间复杂度|
|------------|:-----------|:--------------------:|
|Append|追加字符串,当键存在的时候,把新值追加到现有值的后面;如果键不存在,则创建(类型Set命令)|O(1)|
|GetRange|得到指定范围的字符串的子字符串|O(n)|
|GetSet|得到指定字符串键的旧值,然后为键设置新值|O(1)|
|SetRange|替换指定字符串的一部分|O(1)|①Append命令
语法:append key value
参数说明:key为指定字符串键的名称,value为需要追加的字符串内容。
返回值:追加字符串后,整个新字符串的长度。
例:

get phoneNumber
(nil) //该键对应的值不存在
Append phoneNumber 13812348765 //创建一个新的键值对
(integer) 11
append phoneNumber 12
(integer) 13 //追加后长度为13
get phoneNumber
1381234876512

>说明:Redis在创建新的字符串时,会给字符串增加一倍的空闲空间,所以后续增加相同大小的值的时候,所用时间复杂度为O(1)。这说明增加固定长度的字符串速度最快。②GetRange命令
语法:GetRange key start end
参数说明:key为指定的键,start为开始的位置,end是结束位置。开始位置从0开始,也就是key对应值的第一个字节位置,依次类推。开始和结束位置也可以用负数表示,如-1代表最后一个位置,-2代表倒数第二个位置,依次类推。当开始和结束位置超出范围的时候,该命令会自动把结果控制在值长度范围之内。
返回值:返回指定范围内的子字符串。
例:

set content “this is a exam!”
ok
GetRange content 0 3 //字符串正向从0开始
“this”
GetRange content -5 -2 //从后往前数,截取子字符串
“exam”
GetRange content 10 20 //结束位置超出了字符串本身的长度
“exam!”
GetRange content 0 -1 //获取整个字符串,结束位置用-1比较方便,不用使用StrLen获取整个字符串长度
“this is a exam!”

③GetSet命令
语法:GetSet key value
参数说明:key是指定的键,value是要设置的新值
返回值:返回之前的旧值,如果指定的键不存在,则返回nil
例:

set number 1
ok
GETSET number 2 //给number设置新值2,并返回旧值”1”
“1”
get number
“2”

>说明:GetSet主要应用场景为实现支持重置的计数功能。④SetRange命令
语法:SetRange key offset  value
参数说明:offset为需要修改的开始位置,value是新的子字符串值。如果offset位置超过了指定字符串的长度,则超出部分补"0"。因此该命令可以确保在指定位置设置新的值。
返回值:修改后的新字符串长度。
例:

set title “learning redis”
ok
SETRANGE title 9 “MongoDB”
(integer)15
get title
“learning MongoDB”

"0"的例子:

SETRANGE titles 1 “学习”
(integer) 8
get titles
“”\x00\学习” //一个x00表示一个0

>说明:当指定的键没有值的情况下,在指定的位置会设置新值,Redis需要立即分配内存,这有可能会造成服务器阻塞的现象出现。新值长度越大需要消耗的时间越多。####三、修改数字值的操作命令
Redis为字符串值为数字的数据提供了专门的修改操作命令,如下表所示。|命令名称|功能描述|时间复杂度|
|------------|:------------:|:-------------:|
|Decr|对整数做原子减1操作|O(1)|
|DecrBy|对整数做原子减指定数操作|O(1)|
|Incr|对整数做原子加1操作|O(1)|
|IncrBy|对整数做原子加指定数操作|O(1)|
|IncrByFloat|对浮点数做原子加指定数操作|O(1)|①Decr命令
语法: Decr key
参数说明:key是指定的键,该键对应的值必须为整型。如果key不存在,则会创建新键,并设置对应的值为0.
返回值:返回减1后的值。如果指定键对应的值不是整型,则会返回错误信息。
例:

set count 10
ok
Decr count //值减1
(integer) 9
set count “10gg” //非整型
ok
DECR count
(error) ERR value is not an integer or out of range //错误信息提示

>说明:Decr最大支持64位有符号的整型数字;②DecrBy命令
语法:DecrBy key decremnet
参数说明:key是指定要做减法操作的键,decrement是要减的数。如果key不存在,则会新建键,并设置对应的值为0。
返回值:返回减过之后的值。如果指定键对应的值不是整型,则返回错误信息。
例:

Set count 10
ok
DecrBy count 4 //一次直接减4
(integer) 6

③Incr命令
语法:Incr key
返回值:返回增1之后的值。如果指定的键对应的值为非整型,则返回错误信息。
例:

set count 10
ok
Incr count
(integer) 11
get count
“11”

>说明:Incr最大支持64位有符号的整型数字;原子递增操作最常用的使用场景是计数器、特定场景的限速器。④IncrBy命令
语法:IncrBy key increment
参数说明:increment为要增加的数字。如果key不存在,则新建键并设置对应得值为0.
返回值:增加之后的值。如果指定键对应的值为非整型,则返回错误信息。
例:

set count 10
ok
IncrBy count 2 //一次增加2
(integer) 12

⑤IncrByFloat命令
语法:IncrByFloat key  increment
参数说明:key是指定的键,键对应的值必须为浮点数,increment是要增加的浮点数。
返回值:返回增加后的浮点数值。操作出错,则返回错误信息。
例:

set price 10.2
ok
IncrByFloat price 0.3 //一次增加0.3
“10.5”
“`
说明:当满足一下任意一个条件时,该命令会返回错误信息。
1.key包含非法值(不是一个String)
2.当前的值增加指定数后,不能解析为一个双精度的浮点数

转载于:https://www.cnblogs.com/woxinyiran12/p/9313993.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/266828.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html模糊遮罩层磨砂玻璃,常见的PPT背景:如何设计PPT背景?

第一种:纯色背景纯色背景分为两类,一种为黑白灰等“无色”背景,另一种就是彩色背景。黑白灰等无色背景,是安全的背景,容易配色,所以在使用上最多,如果没有色彩基础的朋友,建议还是用…

linux分文件编程、静态库与动态库

参考:linux静态库与动态库编程 作者:丶PURSUING 发布时间:2021-02-02 16:51:49 网址:https://blog.csdn.net/weixin_44742824/article/details/113539449?spm1001.2014.3001.5501 目录一、分文件编程的引入优点实现二、库的概念什…

十万个为什么儿童版_《虹猫蓝兔十万个为什么》上架爱奇艺奇巴布绘本馆

虹猫蓝兔绘本《虹猫蓝兔十万个为什么》上架爱奇艺奇巴布绘本馆全套专区。《虹猫蓝兔海底历险记》在爱奇艺PC端首页推广。红网时刻6月11日讯(记者 胡邦建 )今日,记者从湖南漫联卡通文化传媒有限公司获悉,该公司旗下的虹猫蓝兔绘本《虹猫蓝兔十万个为什么》…

获取${}中的值? 比如说var a=${date },无法取出date中的值

https://zhidao.baidu.com/question/2079297372778181268.html 转载于:https://www.cnblogs.com/DixinFan/p/9221953.html

GNU make manual 翻译( 一百四十九)

继续翻译 5.7.4 The --print-directory Option ------------------------------------If you use several levels of recursive make invocations, the -w or --print-directory option can make the output a lot easier to understand by showing each directory as make sta…

创文html5作品,【《创文故事》纪录短片入围作品展播之七】引路人

剧情简介:他只是一名普普通通的教师,却每天风雨无阻地为学生引导起上学放学的路。而这一切,没有一分钱,也没有一分利。他以身作则,用自己的行动感染了周围的人:从一开始的几个人,发展到现在几百…

树莓派外设开发基础(wiringPi库)

参考:树莓派外设开发基础篇 作者:丶PURSUING 发布时间:2021-02-05 18:20:53 网址:https://blog.csdn.net/weixin_44742824/article/details/113673019?spm1001.2014.3001.5501 目录外设开发综述及wiringPi库是什么如何获取如何使…

html仿百度页面代码_百度优化需要注意的4点

百度优化的技术很多,需要根据行业特点进行开拓和挖掘。还需要有多年的网络营销服务经验,进行网站分析、关键词分析、同行竞争分析,优化开始后监视网站流量数据。所以百度优化需要注意的4点如下:(1)页面优化。页面质量不高&#xf…

网页版计算器

网页版计算器 http://files.cnblogs.com/voidobject/%E7%BD%91%E9%A1%B5%E5%BD%A2%E5%BC%8F%E7%9A%84%E8%AE%A1%E7%AE%97%E5%99%A8.rar转载于:https://www.cnblogs.com/voidobject/archive/2012/10/04/2711642.html

android导航屏幕,发现具有软件导航栏的Android设备的真实屏幕尺寸(以像素为单位)...

我需要能够知道屏幕的确切大小,不包括软件导航栏.我正在使用andengine来制作游戏.我们希望全力支持新的Nexus系列(4,7和10)根据许多人指出的this page,软件导航栏的大小应为48dp.然后使用this优秀stackexchange帖子上的信息我收集了用于计算软件导航栏大小的公式应该是&#xf…

清除浮动小记,兼容Ie6,7

.clearfix { *zoom:1;}.clearfix:after{clear:both; display:block; height:0; visibility:hidden; line-height:0; content:\20;}转载于:https://www.cnblogs.com/chenhuichao/p/9223571.html

antd vue 多个下拉 联动_Antd下拉选择,自动匹配功能的实现

我就废话不多说了,大家还是直接看代码吧~placeholder"客户名称"showSearchoptionFilterProp"children"//自动匹配输入onChange{this.selectChange}>{this.state.selectCustomer}补充知识:antd select如何支持既能输入不存在的选项…

树莓派串口通信

目录相关概念简述半双工与全双工串口通信注重什么串口通信编程常用API初次使用需要配置树莓派和电脑串口之间读、写、交互接线编写程序其他简单了解为什么说linux一切皆文件查找文件是否存在相关概念 简述半双工与全双工 全双工允许通信双方同时互传数据;半双工不…

英文环境下中文输入法的设置

英文环境下使用ibus输入法 centos安装的时候已经选择了中文支持,输入法也已经安装,但在英文环境下面竟然无法使用中文输入法,解决办法记录于此, 1.安装ibus(centos6以后已经默认安装) #yum install ibus(已经安装了中文…

html把实线变成虚线,Html5 Canvas 绘制虚线和实线的切换方法

场景应用:1需朋者说上事是础一发一开程和开数的目前间)、最开始默认绘制的都新直能分支调二浏页器朋代说,事刚是实线。var canvas document.getElementById("canvas");var context canvas.getContext("2d");context.strokeStyle …

React引入,运行

1.引入 <script src"https://cdn.bootcss.com/react/15.5.4/react.min.js"></script> <script src"https://cdn.bootcss.com/react/15.5.4/react-dom.min.js"></script> <script src"https://cdn.bootcss.com/babel-stand…

ctr z撤回反向_matplotlib 3D图上的反向Z轴

How would one reverse the order on the z axis of a 3D plot (i.e. negative is up, and positive is down)? The following code produces a cone with the base pointing downward; is there a command (like ax.reverse_zlim3d(True) or something?) that can be used t…

linux与windows间共享文件夹 FileZilla树莓派文件传输

参考&#xff1a;linux与windows间的文件共享 作者&#xff1a;丶PURSUING 发布时间&#xff1a;2021-02-09 11:37:48 网址&#xff1a;https://blog.csdn.net/weixin_44742824/article/details/113767236?spm1001.2014.3001.5502 参考&#xff1a;利用FileZilla实现ubuntu与w…

jquery创建并行对象或者叫合并对象

如果有对象A &#xff0c;B 现在我想要合并成对象C 从C里面可以找到A , B 及其子对象 怎么做&#xff1f; var arr new Array();arr[0] $(this).parents("tr")[0];arr[1] $(this).parents("tr").next()[0];var dom $(arr);$(dom).find("td.title …

html5中三角函数,HTML5(四)html5<canvas路径和三角函数的故事>(中)

canvascanvas{background:#ccc;}window.οnlοadfunction(){var canvas document.getElementById("canvas");var cobj canvas.getContext("2d");cobj.rect(100,100,100,100);cobj.stroke();cobj.clip();cobj.fillRect(0,0,120,120);/*画圆*//*cobj.arc(1…