Redis字串類型
字串類型是Redis中最為基礎的資料存放區類型,它在Redis中是二進位安全的,這便意味著該類型可以接受任何格式的資料,如JPEG映像資料或Json對象描述資訊等。在Redis中字串類型的Value最多可以容納的資料長度是512M。
一、最簡單的命令
1、獲得符合規則的鍵名列表
這裡的*號,是指列出所有的鍵,同時*號也可以替換成其他支援glob風格萬用字元格式,具體規則如下:
?:匹配一個字元
*:匹配任意個(包括0個)字元
[]:匹配括弧間多大任一個字元,可以使用“-”表示範圍,如[a-z]
\x:匹配字元x,用於轉義,如需匹配問號,需要\?才能匹配
這裡說明一下,redis命令是不區分大小寫,還有就是keys命令是需要遍曆Redis中所有的鍵的,當鍵很多時,很耗費效能的。所以在生產環境中要儘可能的不用。
例:
redis 127.0.0.1:6379> set name "joan"OKredis 127.0.0.1:6379> get name"joan"redis 127.0.0.1:6379> set aaa 1OKredis 127.0.0.1:6379> set bbb 2OKredis 127.0.0.1:6379> keys *1) "aaa"2) "name"3) "bbb"
2、判斷鍵是否存在
如果存在返回認證類型1,否則返回0
例:
redis 127.0.0.1:6379> exists name(integer) 1redis 127.0.0.1:6379> exists n(integer) 0
3、刪除鍵
返回的是刪除的鍵的個數,這裡說明也可以一次刪除多個鍵,只需空格再加鍵就可以了。例如:
如果刪除一個鍵,這個鍵已經不存在了就會返回0 。
例:
redis 127.0.0.1:6379> keys *1) "aaa"2) "name"3) "bbb"redis 127.0.0.1:6379> del aaa bbb(integer) 2redis 127.0.0.1:6379> del aaa(integer) 0
4、獲得索引值的資料類型
這裡在重複一下上次說過的,redis的資料類型有:string(字串類型)、hash(散列類型)、list(清單類型)、set(集合類型)、zset(有序集合類型)。
下面開始詳細介紹每種資料類型的命令。
二、字串類型
字串類型是Redis中最基本的資料類型,他能儲存任意形式的字串,包括位元據。字串類型也是其他四種資料類型的基礎。也就是說,其他四種資料類型都是由字串類型所組成的。
常用命令如下:
set key value #賦值,傳回值是OK
get key #取值,傳回值是對應鍵的值
incr key #遞增數字,雖然是字串類型,但如果可以是整型的話,也是可以使用此命令遞增的,傳回值是遞增後的值,遞增操作後,再次擷取該key值,值為新值。
例:
redis 127.0.0.1:6379> get age"32"redis 127.0.0.1:6379> incr age(integer) 33redis 127.0.0.1:6379> get age"33"
incrby key number #這個命令和上一個類似,只不過可以通過number指定增長的數量,傳回值同樣是增長後的值
例:
redis 127.0.0.1:6379> incrby age 5(integer) 38redis 127.0.0.1:6379> get age"38"
decr key #遞減數字,類似遞增,這裡不做過多解釋了
decrby key number #類似於incrby,這裡大家應該可以猜到,decrby key number和incrby key -number是一個意思
incrbyfloat key floatnumber #增加指定浮點數,這個是增加一個雙精確度的浮點數,位元多了就會不準
append key value #向尾部追加值,如 append foo ” value”,這個時候用引號是為了標識有空格,傳回值為值的總長度
例:
redis 127.0.0.1:6379> append name 'hello'(integer) 9redis 127.0.0.1:6379> get name"joanhello"
strlen key #擷取字串值總長度,傳回值就是長度,如果key不存在,則返回0
mget key [key ...] #同時獲得多個索引值,索引值的列表
例:
redis 127.0.0.1:6379> mget name age float1) "joanhello"2) "38"3) "33.33"
mset key value [key value ...] #同時設定多個索引值,成功返回OK
redis 127.0.0.1:6379> mset name "joan" age 9 float 33.33OKredis 127.0.0.1:6379> mget name age float1) "joan"2) "9"3) "33.33"
setbit/getbit #這個是位操作,具體樣本如下:
這時賦值給foo值為bar,對應的ASCII碼為98、97、114,轉換為八位二進位為:
01100010、01100001、01110010
進行如下操作:
redis> getbit foo 00redis> getbit foo 11redis> getbit foo 21redis> getbit foo 30
所以getbit就是擷取key對應的字串類型索引值指定位置的二進位的值(0或1),索引從0開始。
如果擷取超出了最大值,也返回0.
而相反,setbit就是來設定key對應的指定位置的二進位值的。傳回值是該位置的舊值。例如
redis> setbit foo 6 0(integer) 1
如果要設定的值超過了最大長度,則命令會將最大長度之後到最大長度之間未設定的值統一設定為0,同理,設定一個不存在的索引值,也會自動把它前面所有未設定的位置二進位設為0。如:
redis> setbit qqq 8 1(integer) 0
則會把qqq對應的值變為00000001 。
bitcount key 命令可以返回字串類型索引值中二進位值為1的個數。
同時他的參數還可以設定查詢的範圍,
bitcount foo 0 1 #意思是只查詢ba兩個位元組中包含二進位值為1的個數。
最後一個bitop命令,可以進行位操作。
bitop OR res foo1 foo2 #意思是把foo1和foo2做OR運算,結果存入res中。bitop支援的位操作有ND、OR、XOR、NOT四個。
字串的操作命令就這些了。位的命令還是很有用的,比如我們在儲存性別的時候可以把性別的類型設定為一個位元位,這樣超級省空間的。
總結
以上就是這篇文章的全部內容了,希望能對大家的學習或者工作帶來一定的協助,如果有疑問大家可以留言交流。