Redis 是什麼?

Posted by
Redis

Redis(Remote Dictionary Server)是一種快速、開放原始碼的記憶體內鍵值資料結構存放區。Redis 隨附一組多功能的記憶體內資料結構,讓您能夠輕鬆地建立各種自訂應用程式,主要使用案例包含快取、工作階段管理、發佈/訂閱以及排行榜。

為了滿足高性能,Redis採用記憶體 (in-memory) 資料集 (dataset)。根據你的使用場景,可以通過每隔一段時間轉儲資料集到磁片,或者追加每條命令到日誌來持久化(persistence)。如果只是需要一個功能豐富,網路化的記憶體緩存,持久化也可以被禁用。

Redis的特點

  • 性能極高,能支持超過 100K+ 每秒的讀寫頻率。
  • 採用主從式架構,並支援非同步複寫,可將資料複寫到多個從屬伺服器 。
  • 幾乎任何資料型態都可使用 Redis 存放在記憶體中。
  • 支援多種語言,如 Java、C、C++ 、Python、PHP 、C#、JavaScript、Node.js、Ruby 等等。
  • 豐富的特性,Redis支持 publish/subscribe, 通知, key 過期等等特性

Redis 應用情境

  • 使用在其他資料庫之前,減輕資料庫的負載 。
  • 對話緩存( session cache ),主要是 Redis 有提供持久化 。
  • 頁面緩存,使頁面 Loading 速度下降。
  • 限制網站資源使用率及抑制濫發垃圾郵件者的影響。
  • 即時排行功能 。

Redis 資料型態與常用指令

一、String

Redis中的String為二進制安全的字串 ,最大能存儲 512MB,如下例所見,使用SET設定 Key為「 name」,Value為 「 mozbuzz 」,並透過 GET 取得 Key為 「name」的 Value。

>SET name mozbuzz
OK
>GET name 
” mozbuzz “

二、List

Redis中的List能夠將數據存儲成一個列表, 並能針對此列表進行豐富的操作,
如下例所見 ,使用 RPUSH 能對 「 employees」列表尾部 ( 右邊 ) 依序插入 「 Eric」、「Allen」,使用 LPUSH 能對「employees」列表頭部 ( 左邊 ) 插入「 Samuel 」 ,故使用 LRANGE 查看「 employees 」列表時可看到值依序為 「 Samuel 」 、 「 Eric」 、 「Allen」 。

> RPUSH employees Eric
OK
> RPUSH employees Allen
(integer) 2
> LPUSH employees Samuel
(integer) 3
> LRANGE employees 0 3
1) “Samuel”
2) “Eric”
3) “Allen”

三、Set

Set能夠將一系列不重複的值存儲成一個無序集合,如下例所見 ,使用SADD依序將 「 Eric」、「 Samuel 」加入集合中,因 Set 為無序集合,故使用 SMEMBERS呈現順序為「Samuel」、「Eric」

>  SADD employees Eric
(integer) 1
> SADD employees Samuel
(integer) 1
> SADD employees Samuel
(integer) 0
> SMEMBERS employees
1) “Samuel”
2) “Eric”

四、ZSet

ZSet 與 Set 一樣為不重複集合,其差別在 ZSet 為有序 Set為無序,如下例所見 ,使用ZADD依序將 「 Eric」、「 Samuel 」及其索引值加入集合中,因 ZSet 為有序集合,故使用 ZRANGE 呈現順序為「Eric」、「Samuel」

> ZADD employees 0 Eric
(integer) 1
> ZADD employees 1 Samuel
(integer) 1
> ZADD employees 2 Samuel
(integer) 0
> ZRANGE employees 0 2
1) “Eric”
2) “Samuel”

五、Hash

Hash 能夠存儲 key 對多個屬性的數據,如下例所見,可使用 HMSET 批量輸入
employee「 name」、「 sex 」,並使用 HMGET 批量取出 Key 所對應的 Value。

> HMSET employee name Samuel sex male
OK
> HMGET employee name sex
1) “Samuel”
2) “male”

廣告

Comments

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料