1. 程式人生 > >Redis的基本資料型別與適用場景

Redis的基本資料型別與適用場景

一些廢話

在負責的一個小專案中,慢慢的出現了一些效能的問題。由於I/O操作資料量過大,會消耗許多效能。然後開始研究如何去使用redis去優化。
雖然一直有使用redis,但僅僅用在儲存session。基本上配置好後就沒研究過redis,所以今天花了點時間學習了一下redis。
本文主要介紹redis的幾種資料型別和適用場景。會列出簡單例子,具體的redis函式不會一一介紹。不過這些簡單的例子基本上滿足80%以上的專案。

簡單介紹

redis是一個比較常用的nosql資料庫。因其是純記憶體操作,所以處理能力十分出色。跟memcache相比支援豐富的資料型別。目前新浪微博大量使用redis儲存資料。

主要內容

如何使用
基本上redis的使用還是十分簡單。通過key-value的形式儲存資料。類似與陣列的操作。
key相關操作
對於key的操作只需要瞭解set、get、exire就差不多。分別是設定key、獲取key對應的value和設定時間。
這裡寫圖片描述

String資料型別
string資料型別是最常用的資料型別。string是二進位制安全的,可以存一些圖片檔案等 。web上可以使用incr操作來統計。如部落格訪問次數、網站訪問量。
這裡介紹三個命令。
set key value :設定key對應的string型別值。
get key :獲取key對於的string型別值。
incr key :向key對應的值加1,返回新的值。注意,incr對於的值必須為int型資料。
這裡寫圖片描述

List型別
list資料型別指key對應的value是一個雙向連結串列結構。所以list型別提供連結串列支援的所有操作。使用場景如微博中我的關注列表。
這裡介紹四個命令
lpush key string :向key對應list頭部新增一個字串元素。
rpush key string :向key對應list尾部新增一個字串元素。
lrange key start end :返回指定區間內(start~end)的元素。下標從0開始。支援負數。
lpop key :從list頭部返回一個元素,並刪除此元素。
另外,list型別還可以實現佇列功能。實現如,使用rpush命令把訊息放進佇列尾部,使用lpop命令把訊息從佇列頭部取出。
這裡寫圖片描述

Set型別
set型別是一種無序集合。set資料型別的優點在於快速查詢元素是否存在。適用於,網站註冊賬號時,使用者名稱不能重複。使用set記錄註冊使用者,如果註冊使用者已經存在set中,則拒絕註冊。
這裡介紹三個命令
sadd key member :新增一個元素到key對於的set集合中。
sismember key member :判斷member是否在set中。
smembers key :返回所以key對於的set元素。
另外,set還可以使用在投票系統中。當限制每個人只能投一票時。將已投過票的使用者id存在key對應的set中。
這裡寫圖片描述
Hash型別
hash型別是每個key對應一個hashtable。hash型別適用於儲存物件。如儲存使用者資訊物件。可以把id當做key。把使用者資訊儲存在hash型別中。如name:chunfeng,age:3,sex:man。
這裡介紹五個命令
hset key field value :設定key對應的hash物件中指定域的值。
hget key field :返回key對應的hash物件中指定域的值。
hkeys key :返回key對應的hash物件中所有field名稱。
hvals key : 返回key對應的hash物件中所有值。(沒有key)
hgetall key:返回key對應的hash物件中所有field和值。
這裡寫圖片描述

結束語

以上是最基本的redis操作。均給出了常用的資料型別,和常用的命令。當然redis不僅僅就這些功能。像常用的資料型別還有Sorted Set沒有進行說明。redis還支援事務處理。還可以將記憶體中的資料儲存到硬碟中,避免宕機丟失資料。等等,要使用好redis還需要更深入的學習。博主其實也只是知道如何使用以上的簡單資料儲存和讀取。深入一點也就懵逼了。
知己知彼才能百戰不殆。要想使用好這個工具,還需要更深入的對工具進行了解。皮毛的東西、雖然能應付得了工作。但是學不到真正的知識。