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
Redis学习与实战之字符串命令相关推荐
- Redis学习笔记②实战篇_黑马点评项目
若文章内容或图片失效,请留言反馈.部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 资料链接:https://pan.baidu.com/s/1189u6u4icQYHg_9_7ovWmA( ...
- Redis学习日记-05:SORT命令
目录 前言 命令&选项 SORT(默认根据元素由小到大): DESC(逆序): ALPHA(非数字元素排序): BY(参考键): LIMIT(返回指定范围的结果): GET(指定排序之后的返回 ...
- Redis学习(6)-常用命令
List命令 value值为LinkedList类型. 使用环境: 1,做大数据集合的增删. 2,任务队列.用户任务队列 链表查看 lrange key start end:获取链表从start到en ...
- Redis学习笔记①基础篇_Redis快速入门
若文章内容或图片失效,请留言反馈.部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 资料链接:https://pan.baidu.com/s/1189u6u4icQYHg_9_7ovWmA( ...
- 《Redis核心技术与实战》学习总结(2)
[Redis]| 总结/Edison Zhou 1上一篇的遗留问题 上一篇总结了一个KV数据库的基本架构 和 Redis的底层数据结构概览,重点总结了Sorted Set的两个数据结构的切换,但没有介 ...
- Redis学习笔记(实战篇)(自用)
Redis学习笔记(实战篇)(自用) 本文根据黑马程序员的课程资料与百度搜索的资料共同整理所得,仅用于学习使用,如有侵权,请联系删除 文章目录 Redis学习笔记(实战篇)(自用) 1.基于Sessi ...
- 【Redis学习】Redis管理命令总结
1.键管理 之前通过对五种数据类型的操作命令的学习发现,Redis在对每种数据进行处理之前,都要先指定该数据的key,然后再指定对该数据进行何种操作. Redis中的key有点类似于Java中的变量名 ...
- 《Redis核心技术与实战》学习总结(1)
[Redis]| 总结/Edison Zhou 0写在开头 作为Key/Value键值数据库,Redis的应用非常广泛.在之前多年的工作生涯中,我也只是关注了零散的技术点,没有对Redis建立起一套整 ...
- Redis学习笔记(面试+实战)
文章目录 概念(面试) 1.什么是Redis 2.Redis的优缺点 3.Redis为什么这么快 4.Redis的持久化 4.1 什么是Redis持久化 4.2 Redis持久化机制 4.2.1RDB ...
最新文章
- R语言Kaplan-Meier绘制生存分析、Log-rank假设检验、Cox回归曲线实战案例:恶性黑色素瘤的术后数据生存分析
- Spring Boot 小技巧
- final关键字的几大特征
- 【算法】一个简单的K近邻(KNN)原理
- WinSock API网络编程——TCP/IP协议详解
- bash 脚本编写_如何在Bash中编写循环
- Scala 深入浅出实战经典 第91讲:Akka第一个案例动手实战架构设计
- 设置SQLSERVER的错误日志数量和查找SQLSERVER安装错误日志
- Vue.js 中取得后台原生HTML字符串 原样显示问题的解决方法
- 云原生数据仓库从托管到原生的演进实践
- Java学习笔记 | Java异常处理
- 原生JS零魂之问(上)学习笔记
- MSSQL2019+Linux7, The SQLServerAgent is not currently running, so it cannot be notified of this
- 理解es6中的暂时性死区
- 互联网思维——简约思维
- 如何修复手机里的m4a格式录音文件
- 23岁那年你正处在哪个状态?现在呢?
- 打印信息无法连接服务器,打印机无法连接服务器
- 小萌库- 新海诚那些唯美感人的动漫
- 咕咚软件显示服务器开小差,咕咚运动怎么用 咕咚运动使用方法