redis中字串型別

2021-07-12 01:25:34 字數 3732 閱讀 8762

字串型別是redis中最基本的資料型別,它能儲存任何形式的字串,包括二進位制資料。你可以用其儲存使用者的手機號,郵箱,json化後的物件甚至是。在ifuchuan型別中鍵允許儲存的資料的最大容量是512mb。

字串型別是其它4種資料型別的基礎,其他資料型別和字串型別的差別從某種角度來說只是組織字串的形式不同。例如,列表型別是以列表的形式組織字串,集合型別是以集合的形式組織字串。

1.賦值和取值

基本形式如下:

set

keyvalue

getkey

舉個例子:

127.0

.0.1:6379> set name lizhao

ok127.0

.0.1:6379> get name

"lizhao"

如果鍵不存在這裡會返回空

2.遞增數字

在字串型別中可以儲存任何形式的字串,當儲存的字串是整型的時候,redis提供了乙個實用的命令incr,其作用是讓當前鍵值遞增,並返回遞增後的值,用法為:

incr key

127.0

.0.1:6379> incr num

(integer) 1

127.0

.0.1:6379> incr num

(integer) 2

127.0

.0.1:6379> incr num

(integer) 3

如果incr要操作的鍵不存在,會自動建立乙個為0的然後依次遞增1。如果要操作的鍵之前都存在但是不是整型,這裡會報錯:

127.0

.0.1:6379> set incrnum num

ok127.0

.0.1:6379> incr incrnum

(error) err value is not

aninteger

or out of range

注意:incr是原子操作,所以不用擔心多執行緒併發。

在redis中對於鍵的命名沒有強制要求,但比較好的規範是用」物件型別:物件id:物件屬性」來命名,如user:1:friends來儲存id為1的使用者的好友列表。

我們可以使用incr來統計文章數量以及文章統計量。

1.增加指定的整數

剛才的incr是每次增加1,這裡我們使用incrby每次增加指定的整數:

127.0

.0.1

:6379> incrby

ttt 2

(integer) 2

127.0

.0.1

:6379> incrby

ttt 3

(integer) 5

2.減少指定的整數

這裡簡單的說一下對應關係:

incr和decr是一對相反的

incrby和decrby是一對相反的

具體的例子不說了。

3.增加指定浮點數

這裡同樣可以增加乙個雙精度浮點數,用法如下:

incrbyfloat key increment

127.0

.0.1:6379> incrbyfloat ttt 2.12

"7.12"

4.向尾部增加值

我們同樣也可以向字串尾部增加我們所需要的value

127.0

.0.1:6379> set

name li

ok127.0

.0(integer) 6

127.0

.0.1:6379> get

name

"lizhao"

5.獲取字串長度

127.0

.0.1:6379> strlen name

(integer) 6

127.0

.0.1:6379> set

name 你好

ok127.0

.0.1:6379> strlen name

(integer) 6

在redis中中文字元是utf-8的編碼,由於」你」和」好」兩個中文字長度是3這裡返回6。

6.同時獲得/設定多個鍵值

mget key1 key2 key3 ....

mset key1 v1 key2 v2 .....

127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3

ok127.0.0.1:6379> mget k1 k2 k3

1) "v1"

2) "v2"

3) "v3"

7.位操作

在redis中我們也可以進行位操作,對於一些大資料的題比如儲存**號碼我們都可以使用位操作來進行。

getbit key offset

setbit key offset value

bitcount key [start] [end]

bitop operation destkey key [key ...]

127.0

.0.1:6379> set foo bar

ok我們這裡使用bar來測試bar的二進位制為

011000100110000101110010

然後我們使用getbit獲取對應位置的二進位制值,獲取第0個位置和第1個位置

127.0

.0.1:6379> getbit foo 0

(integer) 0

127.0

.0.1:6379> getbit foo 1

(integer) 1

如果超出長度則會預設是0

127.0

.0.1:6379> getbit foo 100

(integer) 0

我們使用setbit也可以更新二進位制位置的值

127.0

.0.1:6379> setbit foo 1

0(integer) 1

127.0

.0.1:6379> setbit foo 6

0(integer) 1

127.0

.0.1:6379> get foo

" ar"

如果設定的長度大於二進位制為的長度會把中間的二進位制為設定為0。

127.0

.0.1:6379> setbit foo 25

1(integer) 0

127.0

.0.1:6379> get foo

" az@"

127.0

.0.1:6379> setbit foo 34

1(integer) 0

127.0

.0.1:6379> get foo

" az@ "

我們也可以利用bitop進行一些操作 and,or,xor,not。

127.0

.0.1:6379> set foo1 bar

ok127.0

.0.1:6379> set foo2 aar

ok127.0

.0.1:6379> bitop or res foo1 foo2

(integer) 3

127.0

.0.1:6379> get res

"car"

我們利用位操作命令可以非常緊湊地儲存布林值,而且getbit和setbit時間複雜度是o(1),好好利用我們可以提公升很多效能。

Redis的字串型別

字串是 redis 中最常用的資料結構。字串型別的值,簡單字串,json xml,數字,二進位制 等 最大 512mb 大小。set key value ex seconds px milliseconds nx xx ex 為鍵設定秒級過期時間 px 為鍵設定毫秒級過期時間 nx 鍵必須不存在,才...

Redis儲存型別 字串

string 是 redis 最基本的型別,string 型別是二進位制安全的。意思是 redis 的 string 可以包含任何資料。比如jpg或者序列化的物件。string 型別是 redis 最基本的資料型別,string 型別的值最大能儲存 512mb。設定指定 key 的值 set 獲取指...

Redis之字串型別

重新定義了c語言中的字串 字串的實現 在sds.件中。在redis3.2之前的版本中,是如下儲存字串的 型別別名,用於指向 sdshdr 的 buf 屬性 typedef char sds 儲存字串物件的結構 struct sdshdr 示意圖 而在新版本中redis是如下儲存的。redis官網gi...