字串是 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...