Redis的字串型別

2021-08-18 08:27:11 字數 2415 閱讀 1862

字串是 redis 中最常用的資料結構。字串型別的值,簡單字串,json , xml,數字,二進位制(等),最大 512mb 大小。

set key value [ex seconds] [px milliseconds] [nx|xx]
ex 為鍵設定秒級過期時間

px 為鍵設定毫秒級過期時間

nx 鍵必須不存在,才可以設定成功,新增時使用

xx 鍵必須存在,才能設定成功,更新時使用

setex

與 set 的 ex 選項一樣,設定失效時間。

setex key seconds

value

setnx

與 set 的 nx 選項一樣。

setnx key value
redis 是單執行緒命令處理機制,如果多個客戶端同時執行 setnx 某個 key 的指令,只能有乙個客戶端設定成功。setnx 可以作為分布式鎖的一種實現方案。

get

key

如:

localhost:6379> get hello

"world"

如果鍵不存在返回 nil。

批量操作可以提高效率。由於 redis 的執行命令時間已經足夠高,但是網路請求的時間需要考慮,批量操作能夠減少網路請求次數從而提高效率。

mset key value [key value ...]

mget key [key ...]

localhost:6379> mset a

1 b 2 c 3 d 4

oklocalhost:6379> mget a b c d

1) "1"

2) "2"

3) "3"

4) "4"

incr key
對 key 對應的 value 的整數進行自增操作。如果不是整數,返回錯誤。如果是整數,返回自增結果。如果鍵不存在,按照 0 自增,返回結果是 1。

localhost:6379> exists key

(integer) 0

localhost:6379> incr key

(integer) 1

另外,還有 decr(自減),incrby(自增指定數字),decrby(自減指定數字),incrbyfloat(自增浮點數)等。

自增操作,在其他要考慮併發的系統或語言中,都會使用 cas 原子機制來計數。但是 redis 中因為是單執行緒架構,任何命令都要進行排隊進行順序執行,不需要考慮併發的問題。

redis 會根據當前值的型別和長度來決定使用哪種內部編碼實現。

字串內部編碼:

- int 8個位元組的長整型。

- embstr 小於等於39個位元組的字串。

- raw 大於39個位元組的字串。

整數型別

localhost:

6379> set str 999

oklocalhost:

6379> object encoding str

"int"

短字串

localhost:

6379> set str hello

oklocalhost:

6379> object encoding str

"embstr"

長字串

localhost:

6379> set longstr aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

oklocalhost:

6379> object encoding longstr

"raw"

在 web 服務中,對使用者的資訊儲存在 mysql 中,使用 redis 來快取。大部分資料都由 redis 中獲取,降低 mysql 的訪問壓力。

如果從 redis 中沒有獲取到使用者資訊,那麼需要從 mysql 中獲取,然後將結果寫入 redis 中,並可以新增乙個過期時間。

分布式的 web 服務會將使用者的 session 資訊儲存在各自的伺服器中,但是由於負載均衡可能會將使用者的請求均衡到不同的伺服器,結果可能造成需要重新驗證登陸的情況。

這種情況可以使用 redis 來解決,將使用者的 session 使用 redis 來進行集中管理。使用者每次更新或者查詢登陸都從 redis 中來獲取。

某個 ip 禁止多次訪問的話,可以通過在 redis 中設定 ip 對應的鍵以及過期時間,此時間段中如果還有該 ip 的訪問,經過 redis 查詢到存在,那麼就進行對應的限制即可。

redis中字串型別

字串型別是redis中最基本的資料型別,它能儲存任何形式的字串,包括二進位制資料。你可以用其儲存使用者的手機號,郵箱,json化後的物件甚至是。在ifuchuan型別中鍵允許儲存的資料的最大容量是512mb。字串型別是其它4種資料型別的基礎,其他資料型別和字串型別的差別從某種角度來說只是組織字串的形...

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...