Redis 學習筆記2 – 基礎知識

1. 基礎知識

Redis 通常被描述為一個「鍵值對」方式的存儲的記憶體型資料庫。然而它不僅僅如此,它也可以把數據寫到硬碟上用以持久化。

在 Redis 提供的五種不同的數據結構中,典型的是鍵值對結構。深刻理解這五種數據結構,它們的工作原理,它們提供的方法,以及怎樣用這些數據結構去建模,是學習理解 Redis 的關鍵。 首先要弄明白這些數據結構的具體含義。

1.1 資料庫(Databases)

Redis也有資料庫的概念,資料庫是包含一組數據的集合。

在 Redis 中,通過一個數字來標識資料庫,默認開始標識是 0。 如果你想切換到不同的資料庫,你可以通過使用 select 命令。輸入 select 1。Redis 會響應一個 OK 。

127.0.0.1:6379> select 1  OK  127.0.0.1:6379[1]> select 0  OK  127.0.0.1:6379> 

1.2 命令字,鍵和值(Commands, Keys and Values)

Redis 不單是一個鍵值對存儲,其核心的五種數據結構至少都有一個 key 和一個 value。理解 key 和 value 是非常重要的。

Key 定義了如何標識數據塊。 Values 表示 key指向的 實際數據。Values 可以是任何類型,可以存儲字元串,整數,或序列化對象(比如 JSON, XML )。

key 是看起來應該有像 users:leto 這樣的格式,這樣的一個 key 一看就知道這條數據中有一個叫 leto 的用戶的相關資訊。冒號沒什麼意義,用符號分隔 key 是一般常用方式。

先看個例子:

  set users:leto '{"name": "leto", "planet": "dune", "likes": ["spice"]}'

set 是 命令字。然後是它的參數,一個key是 「users:leto 」,再後面是它的值。 set 可以理解為:設置,存儲,寫入。這裡就是 將 users:leto 和後面的值關聯起來,將來可以通過 這個key (即 users:leto ) 來讀取到這個值。

那麼,怎麼讀取呢?

get users:leto

get 是命令字,執行後會顯示 users:leto 這個key 對應的 值。

1.3 查詢(Querying)

對 Redis 來說,key 是全部,而 value 無所謂。或者,換個說法,Redis 不允許你直接查詢對象的值,只能通過 key 去查找。 value 可以是任何類型 – Redis 根本不需要去理解他們。

基於此,我們來理解 Redis ,考慮它是否適合我們的數據建模,和它所適用的場景。

1.4 記憶體和持久化(Memory and Persistence)

1.快照 Redis 基於一定量 key 的變更,來觸發對資料庫進行快照,保存到硬碟上。默認情況下,Redis 會在每 60 秒,如果有 1000 及以上個 key 發生改變,將對數據快照保存。或每15分鐘,即使少於9個 key 發生改變,也會把數據快照保存。

2.增量 Redis 支援增量模式。一旦 key 發生變化,一個增量包會更新到硬碟上。某些情況下,允許數據60秒的更新延遲,用以換取性能上的提升,是值得的,雖然有可能會發生硬體或軟體異常,導致數據丟失。

3.將持久化任務分流到從伺服器上 一種可選方案

1.5 總結

由於是記憶體型存儲,所以,它會很快。 數據保存的方式是非實時的,確保具有更好的性能。 Redis 的 閃光點是它特別的數據結構。

由於 Redis 很快,我們無需慎重的考慮和它的交互次數,對於可以獲得的高性能,多次查詢的損失微不足道。

END