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

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