日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

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

發(fā)布時(shí)間:2023/12/10 数据库 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis学习与实战之字符串命令 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

字符串命令

一、基本字符串命令

1.基本字符串操作命令(設(shè)置、取值、刪除、取長(zhǎng)度)
命令名稱命令功能執(zhí)行時(shí)間復(fù)雜度
Set為指定的一個(gè)鍵設(shè)置對(duì)應(yīng)的值,如果已經(jīng)存在,則直接覆蓋原來(lái)的值O(1)
Mset對(duì)多個(gè)鍵設(shè)置對(duì)應(yīng)的值,如果值已經(jīng)存在,則直接覆蓋原來(lái)的值。該命令是原子操作O(n)
MSetNX對(duì)多個(gè)鍵設(shè)置對(duì)應(yīng)的值,該命令不允許指定的任何一個(gè)鍵已經(jīng)存在,如果其中有一個(gè)鍵已經(jīng)存在,則該命令執(zhí)行失敗O(n)
Get得到一個(gè)指定鍵的字符串值,如果鍵不存在,則返回nil;如果值不是字符串則返回一個(gè)錯(cuò)誤信息,因?yàn)樵撁钪荒芴幚鞸tring類型的值O(1)
MGet得到所有指定鍵的字符串值,與Get區(qū)別是可以同時(shí)指定多個(gè)鍵,同時(shí)獲取多個(gè)值O(n)
Del刪除指定鍵的值O(1)
StrLen獲取指定鍵的長(zhǎng)度O(1)

①Set命令
語(yǔ)法:Set key value [EX seconds][PX milliseconds][NX|XX]
參數(shù)說(shuō)明:key value 是字符串鍵和值,必選項(xiàng);EX是設(shè)置到期時(shí)間(單位:秒)
PX(單位:毫秒);NX,如果指定的鍵不存在,僅僅是建立鍵名;XX,只有鍵存在時(shí),才可以設(shè)置對(duì)應(yīng)的值;

說(shuō)明:Redis所有操作命令,語(yǔ)法帶有”[“和”]”符號(hào)時(shí),意味著括號(hào)內(nèi)的參數(shù)是可選的,不是必填的。

例:

set bookName "《Redis學(xué)習(xí)與實(shí)踐》" //設(shè)置鍵名為bookName,值為《Redis學(xué)習(xí)與實(shí)踐》 OK //返回值 set bookName "《NoSQL數(shù)據(jù)庫(kù)》" EX 1 //設(shè)置bookName 1秒后過(guò)期 OK //返回值

②MSet命令
語(yǔ)法:MSet key value [key value …]
參數(shù)說(shuō)明:key為指定需要設(shè)置的字符串鍵,value為對(duì)應(yīng)的值,可以同時(shí)設(shè)置多個(gè)鍵值對(duì);返回值總是OK,因?yàn)樵撁顖?zhí)行不會(huì)失敗
例:

MSet bookName1 "數(shù)據(jù)庫(kù)學(xué)習(xí)" bookName2 "MongoDB" //同時(shí)設(shè)置多個(gè)鍵值對(duì) OK //返回值

③MSetNX命令
語(yǔ)法:MSetNX key value [key value …]
參數(shù)說(shuō)明:key是指定設(shè)置的鍵,value為對(duì)應(yīng)的值。返回值:如果所有的鍵都被設(shè)置值,返回1;如果有鍵沒(méi)有設(shè)置成功,則返回0
例:

MSetNX bookID1 1001 bookID2 1002 bookID3 1003 (integer) 1 //三個(gè)鍵都設(shè)置成功,返回1MSetNX bookID1 1001 bookID4 1004 (integer) 0 //bookID1 已經(jīng)存在,設(shè)置失敗,所以會(huì)返回0``` ④Get命令 例:

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

⑤MGet命令 語(yǔ)法:MGet key [key ...] 參數(shù)說(shuō)明:key是鍵名,可以指定多個(gè)鍵。 返回值:返回所有指定鍵對(duì)應(yīng)的值,以列表的形式顯示,不是String值或不存在返回nil,所有該命令不會(huì)返回執(zhí)行失敗信息。 例:

MGet bookName1 bookName2 bookName //同時(shí)獲取3個(gè)鍵的值
1)”數(shù)據(jù)庫(kù)學(xué)習(xí)”
2)”MongoDB”
3) nil //因?yàn)榍懊嬖O(shè)置了bookName過(guò)期時(shí)間為1秒,所以鍵已經(jīng)過(guò)期,返回nil

⑥D(zhuǎn)el命令 語(yǔ)法:Del key [key ...] 參數(shù)說(shuō)明:key是指定要?jiǎng)h除的鍵,允許一次刪除多個(gè)。 返回值:被刪除鍵的個(gè)數(shù)。 例:

Set FirstName Tomcat
ok
Set SecondName “Tomcat2”
ok
Get FirstName
“Tomcat”
get secondName
“Tomcat2”
del FristName SecondName //一次刪除兩個(gè)鍵
(integer) 2 //刪除成功 返回 2
get FirstName
nil

>說(shuō)明:del還可以刪除其他類型的數(shù)據(jù)結(jié)構(gòu),如列表、集合、哈希等。⑦StrLen命令 語(yǔ)法:StrLen key 返回值:返回字符串的長(zhǎng)度;如果鍵不存在,返回0; 例:

set name “李思”
ok
STRLEN name
(integer) 4 //一個(gè)漢字2個(gè)字節(jié)
STRLEN sex
0 //鍵不存在,返回0

####二、修改值字符串操作命令|命令名稱|命令功能|執(zhí)行時(shí)間復(fù)雜度| |------------|:-----------|:--------------------:| |Append|追加字符串,當(dāng)鍵存在的時(shí)候,把新值追加到現(xiàn)有值的后面;如果鍵不存在,則創(chuàng)建(類型Set命令)|O(1)| |GetRange|得到指定范圍的字符串的子字符串|O(n)| |GetSet|得到指定字符串鍵的舊值,然后為鍵設(shè)置新值|O(1)| |SetRange|替換指定字符串的一部分|O(1)|①Append命令 語(yǔ)法:append key value 參數(shù)說(shuō)明:key為指定字符串鍵的名稱,value為需要追加的字符串內(nèi)容。 返回值:追加字符串后,整個(gè)新字符串的長(zhǎng)度。 例:

get phoneNumber
(nil) //該鍵對(duì)應(yīng)的值不存在
Append phoneNumber 13812348765 //創(chuàng)建一個(gè)新的鍵值對(duì)
(integer) 11
append phoneNumber 12
(integer) 13 //追加后長(zhǎng)度為13
get phoneNumber
1381234876512

>說(shuō)明:Redis在創(chuàng)建新的字符串時(shí),會(huì)給字符串增加一倍的空閑空間,所以后續(xù)增加相同大小的值的時(shí)候,所用時(shí)間復(fù)雜度為O(1)。這說(shuō)明增加固定長(zhǎng)度的字符串速度最快。②GetRange命令 語(yǔ)法:GetRange key start end 參數(shù)說(shuō)明:key為指定的鍵,start為開(kāi)始的位置,end是結(jié)束位置。開(kāi)始位置從0開(kāi)始,也就是key對(duì)應(yīng)值的第一個(gè)字節(jié)位置,依次類推。開(kāi)始和結(jié)束位置也可以用負(fù)數(shù)表示,如-1代表最后一個(gè)位置,-2代表倒數(shù)第二個(gè)位置,依次類推。當(dāng)開(kāi)始和結(jié)束位置超出范圍的時(shí)候,該命令會(huì)自動(dòng)把結(jié)果控制在值長(zhǎng)度范圍之內(nèi)。 返回值:返回指定范圍內(nèi)的子字符串。 例:

set content “this is a exam!”
ok
GetRange content 0 3 //字符串正向從0開(kāi)始
“this”
GetRange content -5 -2 //從后往前數(shù),截取子字符串
“exam”
GetRange content 10 20 //結(jié)束位置超出了字符串本身的長(zhǎng)度
“exam!”
GetRange content 0 -1 //獲取整個(gè)字符串,結(jié)束位置用-1比較方便,不用使用StrLen獲取整個(gè)字符串長(zhǎng)度
“this is a exam!”

③GetSet命令 語(yǔ)法:GetSet key value 參數(shù)說(shuō)明:key是指定的鍵,value是要設(shè)置的新值 返回值:返回之前的舊值,如果指定的鍵不存在,則返回nil 例:

set number 1
ok
GETSET number 2 //給number設(shè)置新值2,并返回舊值”1”
“1”
get number
“2”

>說(shuō)明:GetSet主要應(yīng)用場(chǎng)景為實(shí)現(xiàn)支持重置的計(jì)數(shù)功能。④SetRange命令 語(yǔ)法:SetRange key offset value 參數(shù)說(shuō)明:offset為需要修改的開(kāi)始位置,value是新的子字符串值。如果offset位置超過(guò)了指定字符串的長(zhǎng)度,則超出部分補(bǔ)"0"。因此該命令可以確保在指定位置設(shè)置新的值。 返回值:修改后的新字符串長(zhǎng)度。 例:

set title “l(fā)earning redis”
ok
SETRANGE title 9 “MongoDB”
(integer)15
get title
“l(fā)earning MongoDB”

補(bǔ)"0"的例子:

SETRANGE titles 1 “學(xué)習(xí)”
(integer) 8
get titles
“”\x00\學(xué)習(xí)” //一個(gè)x00表示一個(gè)0

>說(shuō)明:當(dāng)指定的鍵沒(méi)有值的情況下,在指定的位置會(huì)設(shè)置新值,Redis需要立即分配內(nèi)存,這有可能會(huì)造成服務(wù)器阻塞的現(xiàn)象出現(xiàn)。新值長(zhǎng)度越大需要消耗的時(shí)間越多。####三、修改數(shù)字值的操作命令 Redis為字符串值為數(shù)字的數(shù)據(jù)提供了專門(mén)的修改操作命令,如下表所示。|命令名稱|功能描述|時(shí)間復(fù)雜度| |------------|:------------:|:-------------:| |Decr|對(duì)整數(shù)做原子減1操作|O(1)| |DecrBy|對(duì)整數(shù)做原子減指定數(shù)操作|O(1)| |Incr|對(duì)整數(shù)做原子加1操作|O(1)| |IncrBy|對(duì)整數(shù)做原子加指定數(shù)操作|O(1)| |IncrByFloat|對(duì)浮點(diǎn)數(shù)做原子加指定數(shù)操作|O(1)|①Decr命令 語(yǔ)法: Decr key 參數(shù)說(shuō)明:key是指定的鍵,該鍵對(duì)應(yīng)的值必須為整型。如果key不存在,則會(huì)創(chuàng)建新鍵,并設(shè)置對(duì)應(yīng)的值為0. 返回值:返回減1后的值。如果指定鍵對(duì)應(yīng)的值不是整型,則會(huì)返回錯(cuò)誤信息。 例:

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 //錯(cuò)誤信息提示

>說(shuō)明:Decr最大支持64位有符號(hào)的整型數(shù)字;②DecrBy命令 語(yǔ)法:DecrBy key decremnet 參數(shù)說(shuō)明:key是指定要做減法操作的鍵,decrement是要減的數(shù)。如果key不存在,則會(huì)新建鍵,并設(shè)置對(duì)應(yīng)的值為0。 返回值:返回減過(guò)之后的值。如果指定鍵對(duì)應(yīng)的值不是整型,則返回錯(cuò)誤信息。 例:

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

③Incr命令 語(yǔ)法:Incr key 返回值:返回增1之后的值。如果指定的鍵對(duì)應(yīng)的值為非整型,則返回錯(cuò)誤信息。 例:

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

>說(shuō)明:Incr最大支持64位有符號(hào)的整型數(shù)字;原子遞增操作最常用的使用場(chǎng)景是計(jì)數(shù)器、特定場(chǎng)景的限速器。④IncrBy命令 語(yǔ)法:IncrBy key increment 參數(shù)說(shuō)明:increment為要增加的數(shù)字。如果key不存在,則新建鍵并設(shè)置對(duì)應(yīng)得值為0. 返回值:增加之后的值。如果指定鍵對(duì)應(yīng)的值為非整型,則返回錯(cuò)誤信息。 例:

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

⑤IncrByFloat命令 語(yǔ)法:IncrByFloat key increment 參數(shù)說(shuō)明:key是指定的鍵,鍵對(duì)應(yīng)的值必須為浮點(diǎn)數(shù),increment是要增加的浮點(diǎn)數(shù)。 返回值:返回增加后的浮點(diǎn)數(shù)值。操作出錯(cuò),則返回錯(cuò)誤信息。 例:

set price 10.2
ok
IncrByFloat price 0.3 //一次增加0.3
“10.5”
“`
說(shuō)明:當(dāng)滿足一下任意一個(gè)條件時(shí),該命令會(huì)返回錯(cuò)誤信息。
1.key包含非法值(不是一個(gè)String)
2.當(dāng)前的值增加指定數(shù)后,不能解析為一個(gè)雙精度的浮點(diǎn)數(shù)

轉(zhuǎn)載于:https://www.cnblogs.com/woxinyiran12/p/9313993.html

總結(jié)

以上是生活随笔為你收集整理的Redis学习与实战之字符串命令的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。