命令名稱 | 命令功能 | 執行時間複雜度 |
---|---|---|
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.當前的值增長指定數後,不能解析爲一個雙精度的浮點數