Redis 數據類型
Redis 不僅僅是簡單的 key-value 存儲器,同時也是一種 data structures server。傳統的 key-value 是指支持使用一個 key 字符串來索引 value 字符串的存儲,而 Redis 中,value 不僅僅支持字符串,還支持更多的複雜結構,包括列表、集合、哈希表等。
strings
字符串是最基本、最常用的Redis值類型
Redis 字符串是二進制安全的,這意味着一個 Redis 字符串能包含任意類型的數據,例如: 一張經過 base64 編碼的圖片或者一個序列化的 Ruby 對象。通過這樣的方式,Redis 的字符串可以支持任意形式的數據,但是對於過大的文件不適合存入 redis,一方面系統內存有限,另外一方面字符串類型的值最多能存儲 512M 字節的內容。
redis-cli strings 基本操作:
- set key value [EX seconds] [PX milliseconds] [NX|XX] 添加一個key-value數據(NX: set 命令只有在沒有相同 key 的情況下成功;XX:在有相同 key 值的情況下成功)
- get key 獲取key對應的value
- incr key key對應的值+1
- decr key key對應的值-1
- incrby/decrby key increment/decrement key對應的值+/- n
- mset key value [key value …] 一次性完成多個key-value的對應關係
- mget key [key …] 一次性獲取多個key的值,返回value數組
lists
Redis 列表是簡單的字符串列表,按照插入順序排序。你可以添加一個元素到列表的頭部(左邊)或者尾部(右邊),lpush 命令插入一個新的元素到頭部,而 rpush 命令插入一個新元素到尾部。當這兩個操作中的任一操作在一個空的 Key 上執行時就會創建一個新的列表。相似的,如果一個列表操作清空一個列表,那麼對應的 key 將被從 key 空間刪除。
push 一類的命令的返回值爲 list 的長度。
- redis-cli lists 基本操作:
- lpush key value [values …] 往列表頭部(左邊)插入數據,結果爲倒序列表
- lrange key start stop 0表示 list 開頭第一個,-1 表示 list 的倒數第一個,即最後一個。-2 則是 list 的倒數第二個,以此類推。
- rpush key value [values …] 往列表尾部(右邊)插入數據,結果爲正序列表
- del key [key] 刪除一個key
- lpop/rpop key 獲取頭部/尾部的第一個元素並刪除該元素
一個列表最多可以包含 4294967295(2 的 32 次方減一)個元素,這意味着它可以容納海量的信息,最終瓶頸一般都取決於服務器內存大小。
- 阻塞操作
- blpop/brpop key [key …] timeout 阻塞獲取頭部/尾部的第一個元素並刪除該元素(list不存在時阻塞超時後返回nil)
- 使用場景
List 元素是線性有序的,適合用來存儲聊天記錄等順序結構的數據。