第一章 認識Redis 【Redis入門教程】

薛8發表於2019-02-09
image

Redis入門教程目錄【Redis入門教程目錄】

簡介

Redis是由C語言編寫的開源、基於記憶體、支援多種資料結構、高效能的Key-Value資料庫。

特性

速度快

首先Redis是將資料儲存在記憶體中的,通常情況下每秒讀寫次數達到千萬級別其次Redis使用ANSI C編寫,因為C語言接近作業系統,所以Redis的執行效率很高。最後Redis的處理網路請求部分採用的是單執行緒,如果想充分利用CPU資源的話,可以多開幾個Redis例項來達到目的,為什麼單執行緒還是速度快的原因呢?我們知道Redis的讀寫都是基於記憶體的,讀寫速度都是非常快的,不會出現需要等待很長時間,所以瓶頸並不會出現在請求讀寫上,所以沒必要使用多執行緒來利用CPU,如果使用多執行緒的話(執行緒數>CPU數情況下),多執行緒的建立、銷燬、執行緒切換、執行緒競爭等開銷所需要的時間會比執行讀寫所損耗的時間還多,那就南轅北轍了,當然這是在資料量小的時候才會這樣,如果資料量到達一定量級了,那肯定是多執行緒比單執行緒快(執行緒數<=CPU數情況下)。

image

持久化

Redis可以通過RDBAOF兩種方式將資料持久化到磁碟上,其中這兩種方式的區別如下:

  • RDB:是在指定的時間間隔內將記憶體中的資料通過非同步生成資料快照並且儲存到磁碟中。
  • AOF:相對於RDB方式,AOF方式的持久化更細粒度,把每次資料變化(寫、刪除操作)都記錄AOF檔案中,其中AOF又可以配置為always即實時將記錄寫到AOF檔案中,everysec每隔一秒將記錄寫到AOF檔案中,no由系統決定何時將記錄寫到AOF檔案中。

多種資料結構

Redis支援五種基本的資料結構,分別是String(字串),Hash(雜湊),List(列表),Set(集合),Zset(即Sorted Set有序集合),這些資料結構型別和我們使用的開發語言的資料結構型別其實是相對應的。

image

多語言客戶端

Redis支援多種語言,諸如Ruby,Python, Twisted Python, PHP, Erlang, Tcl, Perl, Lua, Java, Scala, Clojure等。

功能豐富

Redis支援釋出訂閱、Lua指令碼、事務、Pipeline等功能。

主從複製

在Redis中,使用者可以通過執行SLAVEOF命令或者SLAVEOF選項,讓從伺服器去複製主伺服器,為高可用分散式提供了基礎。

image

高可用和叢集

  1. 高可用
    有了主從複製之後的實現之後,如果想對伺服器進行監控,那麼在Redis2.6以後提供了一個Sentinel(哨兵機制)。顧名思義,哨兵的含義就是監控Redis系統的執行狀態,可以啟動多個哨兵,去監控Redis資料庫的執行狀態。其功能有以下兩點:
    a.監控所有節點資料庫是否正常執行
    b.主資料庫出現故障時,可以通過自動投票機制,在從資料庫選舉出新的主資料庫,實現將從資料庫轉為主資料庫的自動切換。
  2. 叢集
    Redis在3.0版本正式引入了Redis-Cluster叢集這個特徵。Redis-Cluster採用無中心架構,每個節點儲存完整的資料和整個叢集的狀態,每個節點都和其他所有節點連線。
    image

安裝和啟動

使用wget命令下載Redis

wget http://download.redis.io/releases/redis-5.0.3.tar.gz
複製程式碼

解壓Redis壓縮包

tar xzf redis-5.0.3.tar.gz
複製程式碼

進入到Redis的資料夾

cd redis-5.0.3
複製程式碼

編譯Redis

make
複製程式碼

這樣我們的Redis就編譯好了,為了能全域性使用Redis的命令,我們還需要執行安裝命令,將可執行檔案安裝到環境變數中。

make install
複製程式碼

這樣Redis的安裝就完成了,我們來啟動Redis,其中Redis的啟動有三種方式

  1. 直接啟動 直接執行redis-server即可啟動Redis,這個方式啟動實際上就是讀取Redis的預設配置啟動。
  2. 動態引數啟動 執行redis-server --port 6380即可指定埠號啟動Redis,更多引數可以參考官方的文件。
  3. 配置檔案啟動 執行redis-server config.conf即可指定名為config.conf的配置檔案進行啟動Redis。

相關文章