命令名称 | 命令功能 | 执行时间复杂度 |
---|---|---|
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,只有键存在时,才能够设置对应的值;python
说明:Redis全部操做命令,语法带有”[“和”]”符号时,意味着括号内的参数是可选的,不是必填的。redis
例:数据库
set bookName "《Redis学习与实践》" //设置键名为bookName,值为《Redis学习与实践》
OK //返回值
set bookName "《NoSQL数据库》" EX 1 //设置bookName 1秒后过时
OK //返回值
②MSet命令
语法:MSet key value [key value …]
参数说明:key为指定须要设置的字符串键,value为对应的值,能够同时设置多个键值对;返回值老是OK,由于该命令执行不会失败
例:ruby
MSet bookName1 "数据库学习" bookName2 "MongoDB" //同时设置多个键值对
OK //返回值
③MSetNX命令
语法:MSetNX key value [key value …]
参数说明:key是指定设置的键,value为对应的值。返回值:若是全部的键都被设置值,返回1;若是有键没有设置成功,则返回0
例:bash
MSetNX bookID1 1001 bookID2 1002 bookID3 1003
(integer) 1 //三个键都设置成功,返回1
MSetNX 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
nilapp
>说明:del还能够删除其余类型的数据结构,如列表、集合、哈希等。
⑦StrLen命令
语法:StrLen key
返回值:返回字符串的长度;若是键不存在,返回0;
例:
set name “李思”
ok
STRLEN name
(integer) 4 //一个汉字2个字节
STRLEN sex
0 //键不存在,返回0学习
####2、修改值字符串操做命令
|命令名称|命令功能|执行时间复杂度|
|------------|:-----------|:--------------------:|
|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
1381234876512ui
>说明: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须要当即分配内存,这有可能会形成服务器阻塞的现象出现。新值长度越大须要消耗的时间越多。
####3、修改数字值的操做命令
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.当前的值增长指定数后,不能解析为一个双精度的浮点数