Redis字符串類(lèi)型
字符串類(lèi)型是Redis中最為基礎(chǔ)的數(shù)據(jù)存儲(chǔ)類(lèi)型,它在Redis中是二進(jìn)制安全的,這便意味著該類(lèi)型可以接受任何格式的數(shù)據(jù),如JPEG圖像數(shù)據(jù)或Json對(duì)象描述信息等。在Redis中字符串類(lèi)型的Value最多可以容納的數(shù)據(jù)長(zhǎng)度是512M。
一、最簡(jiǎn)單的命令
1、獲得符合規(guī)則的鍵名列表
這里的*號(hào),是指列出所有的鍵,同時(shí)*號(hào)也可以替換成其他支持glob風(fēng)格通配符格式,具體規(guī)則如下:
?:匹配一個(gè)字符
*:匹配任意個(gè)(包括0個(gè))字符
[]:匹配括號(hào)間多大任一個(gè)字符,可以使用“-”表示范圍,如[a-z]
\x:匹配字符x,用于轉(zhuǎn)義,如需匹配問(wèn)號(hào),需要\&;才能匹配
這里說(shuō)明一下,redis命令是不區(qū)分大小寫(xiě)的,還有就是keys命令是需要遍歷Redis中所有的鍵的,當(dāng)鍵很多時(shí),很耗費(fèi)性能的。所以在生產(chǎn)環(huán)境中要盡可能的不用。
例:
redis 127.0.0.1:6379> set name "joan"
OK
redis 127.0.0.1:6379> get name
"joan"
redis 127.0.0.1:6379> set aaa 1
OK
redis 127.0.0.1:6379> set bbb 2
OK
redis 127.0.0.1:6379> keys *
1) "aaa"
2) "name"
3) "bbb"
2、判斷鍵是否存在
如果存在返回證書(shū)類(lèi)型1,否則返回0
例:
redis 127.0.0.1:6379> exists name
(integer) 1
redis 127.0.0.1:6379> exists n
(integer) 0
3、刪除鍵
返回的是刪除的鍵的個(gè)數(shù),這里說(shuō)明也可以一次刪除多個(gè)鍵,只需空格再加鍵就可以了。例如:
如果刪除一個(gè)鍵,這個(gè)鍵已經(jīng)不存在了就會(huì)返回0 。
例:
redis 127.0.0.1:6379> keys *
1) "aaa"
2) "name"
3) "bbb"
redis 127.0.0.1:6379> del aaa bbb
(integer) 2
redis 127.0.0.1:6379> del aaa
(integer) 0
4、獲得鍵值的數(shù)據(jù)類(lèi)型
這里在重復(fù)一下上次說(shuō)過(guò)的,redis的數(shù)據(jù)類(lèi)型有:string(字符串類(lèi)型)、hash(散列類(lèi)型)、list(列表類(lèi)型)、set(集合類(lèi)型)、zset(有序集合類(lèi)型)。
下面開(kāi)始詳細(xì)介紹每種數(shù)據(jù)類(lèi)型的命令。
二、字符串類(lèi)型
字符串類(lèi)型是Redis中最基本的數(shù)據(jù)類(lèi)型,他能存儲(chǔ)任意形式的字符串,包括二進(jìn)制數(shù)據(jù)。字符串類(lèi)型也是其他四種數(shù)據(jù)類(lèi)型的基礎(chǔ)。也就是說(shuō),其他四種數(shù)據(jù)類(lèi)型都是由字符串類(lèi)型所組成的。
常用命令如下:
set key value
#賦值,返回值是OK
get key
#取值,返回值是對(duì)應(yīng)鍵的值
incr key
#遞增數(shù)字,雖然是字符串類(lèi)型,但如果可以是整型的話,也是可以使用此命令遞增的,返回值是遞增后的值,遞增操作后,再次獲取該key值,值為新值。
例:
redis 127.0.0.1:6379> get age
"32"
redis 127.0.0.1:6379> incr age
(integer) 33
redis 127.0.0.1:6379> get age
"33"
incrby key number
#這個(gè)命令和上一個(gè)類(lèi)似,只不過(guò)可以通過(guò)number指定增長(zhǎng)的數(shù)量,返回值同樣是增長(zhǎng)后的值
例:
redis 127.0.0.1:6379> incrby age 5
(integer) 38
redis 127.0.0.1:6379> get age
"38"
decr key
#遞減數(shù)字,類(lèi)似遞增,這里不做過(guò)多解釋了
decrby key number
#類(lèi)似于incrby,這里大家應(yīng)該可以猜到,decrby key number和incrby key -number是一個(gè)意思
incrbyfloat key floatnumber
#增加指定浮點(diǎn)數(shù),這個(gè)是增加一個(gè)雙精度的浮點(diǎn)數(shù),位數(shù)多了就會(huì)不準(zhǔn)
append key value
#向尾部追加值,如 append foo ” value”,這個(gè)時(shí)候用引號(hào)是為了標(biāo)識(shí)有空格,返回值為值的總長(zhǎng)度
例:
redis 127.0.0.1:6379> append name 'hello'
(integer) 9
redis 127.0.0.1:6379> get name
"joanhello"
strlen key
#獲取字符串值總長(zhǎng)度,返回值就是長(zhǎng)度,如果key不存在,則返回0
mget key [key ...]
#同時(shí)獲得多個(gè)鍵值,鍵值的列表
例:
redis 127.0.0.1:6379> mget name age float
1) "joanhello"
2) "38"
3) "33.33"
mset key value [key value ...]
#同時(shí)設(shè)置多個(gè)鍵值,成功返回OK
redis 127.0.0.1:6379> mset name "joan" age 9 float 33.33
OK
redis 127.0.0.1:6379> mget name age float
1) "joan"
2) "9"
3) "33.33"
setbit/getbit
#這個(gè)是位操作,具體示例如下:
這時(shí)賦值給foo值為bar,對(duì)應(yīng)的ASCII碼為98、97、114,轉(zhuǎn)換為八位二進(jìn)制為:
01100010、01100001、01110010
進(jìn)行如下操作:
redis> getbit foo 0
0
redis> getbit foo 1
1
redis> getbit foo 2
1
redis> getbit foo 3
0
所以getbit就是獲取key對(duì)應(yīng)的字符串類(lèi)型鍵值指定位置的二進(jìn)制的值(0或1),索引從0開(kāi)始。
如果獲取超出了最大值,也返回0.
而相反,setbit就是來(lái)設(shè)置key對(duì)應(yīng)的指定位置的二進(jìn)制值的。返回值是該位置的舊值。例如
redis> setbit foo 6 0
(integer) 1
如果要設(shè)置的值超過(guò)了最大長(zhǎng)度,則命令會(huì)將最大長(zhǎng)度之后到最大長(zhǎng)度之間未設(shè)置的值統(tǒng)一設(shè)置為0,同理,設(shè)置一個(gè)不存在的鍵值,也會(huì)自動(dòng)把它前面所有未設(shè)置的位置二進(jìn)制設(shè)為0。如:
redis> setbit qqq 8 1
(integer) 0
則會(huì)把qqq對(duì)應(yīng)的值變?yōu)?0000001 。
bitcount key
命令可以返回字符串類(lèi)型鍵值中二進(jìn)制值為1的個(gè)數(shù)。
同時(shí)他的參數(shù)還可以設(shè)置查詢的范圍,
bitcount foo 0 1
#意思是只查詢ba兩個(gè)字節(jié)中包含二進(jìn)制值為1的個(gè)數(shù)。
最后一個(gè)bitop命令,可以進(jìn)行位操作。
bitop OR res foo1 foo2
#意思是把foo1和foo2做OR運(yùn)算,結(jié)果存入res中。bitop支持的位操作有ND、OR、XOR、NOT四個(gè)。
字符串的操作命令就這些了。位的命令還是很有用的,比如我們?cè)诖鎯?chǔ)性別的時(shí)候可以把性別的類(lèi)型設(shè)置為一個(gè)比特位,這樣超級(jí)省空間的。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望能對(duì)大家的學(xué)習(xí)或者工作帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流。
您可能感興趣的文章:- Redis字符串原理的深入理解
- Redis緩存,泛型集合與json字符串的相互轉(zhuǎn)換實(shí)例
- redis內(nèi)部數(shù)據(jù)結(jié)構(gòu)之SDS簡(jiǎn)單動(dòng)態(tài)字符串詳解
- redis命令行查看中文不亂碼的方法(十六進(jìn)制字符串處理)
- Redis中的動(dòng)態(tài)字符串學(xué)習(xí)教程
- Redis核心原理與實(shí)踐之字符串實(shí)現(xiàn)原理