?? ?? 字符串類型是Redis中最為基礎的數據存儲類型,它在Redis中是二進制安全的,這便意味著該類型可以接受任何格式的數據,如JPEG圖像數據或Json對象描述信息等。在Redis中字符串類型的Value最多可以容納的數據長度是512M。
?? 1. SET/GET/APPEND/STRLEN:
???
?
/> redis-cli
???
#執行Redis客戶端工具。
?? ?redis 127.0.0.1:6379>?
exists mykey
???????????????????
#判斷該鍵是否存在,存在返回1,否則返回0。
?? ?(integer) 0
?? ?redis 127.0.0.1:6379>
?append mykey "hello"
? ? ??
#該鍵并不存在,因此append命令返回當前Value的長度。
?? ?(integer) 5
?? ?redis 127.0.0.1:6379>?
append mykey " world"
????
#該鍵已經存在,因此返回追加后Value的長度。
?? ?(integer) 11
?? ?redis 127.0.0.1:6379>?
get mykey ? ? ? ? ? ? ? ? ?????
#通過get命令獲取該鍵,以判斷append的結果。
?? ?"hello world"
??? redis 127.0.0.1:6379>?
set mykey "this is a test"
?
#通過set命令為鍵設置新值,并覆蓋原有值。
??? OK
??? redis 127.0.0.1:6379>?
get mykey
??? "this is a test"
??? redis 127.0.0.1:6379>?
strlen mykey
????????????????? #獲取指定Key的字符長度,等效于C庫中strlen函數。
??? (integer) 14
?? ?
2. INCR/DECR/INCRBY/DECRBY:
??? redis 127.0.0.1:6379>?
set mykey 20
?????
#設置Key的值為20
?? ?OK
?? ?redis 127.0.0.1:6379>?
incr mykey
?? ??
??? #該Key的值遞增1
?? ?(integer) 21
?? ?redis 127.0.0.1:6379>?
decr mykey
????
??? #該Key的值遞減1
?? ?(integer) 20
?? ?redis 127.0.0.1:6379>?
del mykey
??? ? ? ??
#刪除已有鍵。
?? ?(integer) 1
?? ?redis 127.0.0.1:6379>?
decr mykey
????
??? #對空值執行遞減操作,其原值被設定為0,遞減后的值為-1
?? ?(integer) -1
?? ?redis 127.0.0.1:6379>?
del mykey?
??
?? ?(integer) 1
?? ?redis 127.0.0.1:6379>
?incr mykey
????????
#對空值執行遞增操作,其原值被設定為0,遞增后的值為1
?? ?(integer) 1
?? ?redis 127.0.0.1:6379>?
set mykey hello
?
#將該鍵的Value設置為不能轉換為整型的普通字符串。
?? ?OK
?? ?redis 127.0.0.1:6379>?
incr mykey
????????
#在該鍵上再次執行遞增操作時,Redis將報告錯誤信息。
???
?(error) ERR value is not an integer or out of range
??? redis 127.0.0.1:6379>?
set mykey 10
?? ?OK
?? ?redis 127.0.0.1:6379>?
decrby mykey 5
?
?? ?(integer) 5
?? ?redis 127.0.0.1:6379>?
incrby mykey 10
?? ?(integer) 15
???
?3. GETSET:
?? ?redis 127.0.0.1:6379>?
incr mycounter
??????
#將計數器的值原子性的遞增1
?? ?(integer) 1
??? #在獲取計數器原有值的同時,并將其設置為新值,這兩個操作原子性的同時完成。
?? ?redis 127.0.0.1:6379>?
getset mycounter 0?
?
?? ?"1"
?? ?redis 127.0.0.1:6379>?
get mycounter
???????
#查看設置后的結果。
?? ?"0"
?? ??? ?????
????
4. SETEX:
??? redis 127.0.0.1:6379>?
setex mykey 10 "hello"?
??
#設置指定Key的過期時間為10秒。
??? OK????
? ??
#通過ttl命令查看一下指定Key的剩余存活時間(秒數),0表示已經過期,-1表示永不過期。
??? redis 127.0.0.1:6379>?
ttl mykey
???????????????????????
??? (integer) 4
??? redis 127.0.0.1:6379>?
get mykey?
?????????????????????
#在該鍵的存活期內我們仍然可以獲取到它的Value。
??? "hello"
??? redis 127.0.0.1:6379>?
ttl mykey
????????????????????????
#該ttl命令的返回值顯示,該Key已經過期。
??? (integer) 0
??? redis 127.0.0.1:6379>?
get mykey
??????????????????????
#獲取已過期的Key將返回nil。
??? (nil)
?? 5. SETNX:
?? ?redis 127.0.0.1:6379>?
del mykey
???????????? ? ? ? ???
#刪除該鍵,以便于下面的測試驗證。
?? ?(integer) 1
?? ?redis 127.0.0.1:6379>?
setnx mykey "hello"
????????
#該鍵并不存在,因此該命令執行成功。
?? ?(integer) 1
?? ?redis 127.0.0.1:6379>?
setnx mykey "world"
???????
#該鍵已經存在,因此本次設置沒有產生任何效果。
?? ?(integer) 0
?? ?redis 127.0.0.1:6379>?
get mykey
???????????? ? ? ? ???
#從結果可以看出,返回的值仍為第一次設置的值。
?? ?"hello"
????
6. SETRANGE/GETRANGE:
?? ?redis 127.0.0.1:6379>?
set mykey "hello world"?
??????
#設定初始值。
?? ?OK
?? ?redis 127.0.0.1:6379>?
setrange mykey 6 dd?
?????????
#從第六個字節開始替換2個字節(dd只有2個字節)
?? ?(integer) 11
?? ?redis 127.0.0.1:6379>?
get mykey
?????????????????????????
#查看替換后的值。
?? ?"hello ddrld"
?? ?redis 127.0.0.1:6379>?
setrange mykey 20 dd
????????
#offset已經超過該Key原有值的長度了,該命令將會在末尾補0。
?? ?(integer) 22
?? ?redis 127.0.0.1:6379>?
get mykey
???????????????????? ? ? ??
#查看補0后替換的結果。
?? ?"hello ddrld\x00\x00\x00\x00\x00\x00\x00\x00\x00dd"
?? ?redis 127.0.0.1:6379>?
del mykey
?????????????????????????
#刪除該Key。
?? ?(integer) 1
?? ?redis 127.0.0.1:6379>?
setrange mykey 2 dd
?????????
#替換空值。
?? ?(integer) 4
?? ?redis 127.0.0.1:6379>?
get mykey
????????????????????????
#查看替換空值后的結果。
?? ?"\x00\x00dd"???
?? ?redis 127.0.0.1:6379>?
set mykey "0123456789"
???
#設置新值。
?? ?OK
?? ?redis 127.0.0.1:6379>?
getrange mykey 1 2
??????
#截取該鍵的Value,從第一個字節開始,到第二個字節結束。
?? ?"12"
?? ?redis 127.0.0.1:6379>?
getrange mykey 1 20
???
#20已經超過Value的總長度,因此將截取第一個字節后面的所有字節。
?? ?"123456789"
????
7. SETBIT/GETBIT:
?? ?redis 127.0.0.1:6379>?
del mykey
?? ?(integer) 1
?? ?redis 127.0.0.1:6379>
?setbit mykey 7 1
???????
#設置從0開始計算的第七位BIT值為1,返回原有BIT值0
?? ?(integer) 0
?? ?redis 127.0.0.1:6379>?
get mykey
????????????????
#獲取設置的結果,二進制的0000 0001的十六進制值為0x01
?? ?"\x01"
?? ?redis 127.0.0.1:6379>?
setbit mykey 6 1
???????
#設置從0開始計算的第六位BIT值為1,返回原有BIT值0
?? ?(integer) 0
?? ?redis 127.0.0.1:6379>?
get mykey
????????????????
#獲取設置的結果,二進制的0000 0011的十六進制值為0x03
?? ?"\x03"
??? redis 127.0.0.1:6379>?
getbit mykey 6?
?????????
#返回了指定Offset的BIT值。
?? ?(integer) 1
?? ?redis 127.0.0.1:6379>?
getbit mykey 10
????????
#Offset已經超出了value的長度,因此返回0。
?? ?(integer) 0
?? 8. MSET/MGET/MSETNX:
?? ?redis 127.0.0.1:6379>?
mset key1 "hello" key2 "world"
???
#批量設置了key1和key2兩個鍵。
?? ?OK
?? ?redis 127.0.0.1:6379>?
mget key1 key2
????????????????????????
#批量獲取了key1和key2兩個鍵的值。
?? ?1) "hello"
?? ?2) "world"
?? ?#批量設置了key3和key4兩個鍵,因為之前他們并不存在,所以該命令執行成功并返回1。
?? ?redis 127.0.0.1:6379>?
msetnx key3 "stephen" key4 "liu"
?
?? ?(integer) 1
?? ?redis 127.0.0.1:6379>?
mget key3 key4????
????????????? ?
?? ?1) "stephen"
?? ?2) "liu"
?? ?#批量設置了key3和key5兩個鍵,但是key3已經存在,所以該命令執行失敗并返回0。
?? ?redis 127.0.0.1:6379>?
msetnx key3 "hello" key5 "world"
?
?? ?(integer) 0
?? ?#批量獲取key3和key5,由于key5沒有設置成功,所以返回nil。
?? ?redis 127.0.0.1:6379>?
mget key3 key5?????
???????????? ?
?? ?1) "stephen"
?? ?2) (nil)
?老徐,人人安家網 (http://www.renrenaj.com) 技術架構 人人安家網版本采用開源的方式:訪問http://www.renrenaj.com/opensource/
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
