redis簡介

redis是一種非關系性數據庫,單進程工作模型,通常用來做KV存儲,同memcached一樣,所有數據加載至內存工作因此工作效率非??欤麜却嬷械臄祿街链疟P當中,使得數據不會像memcached的一樣,斷電后丟失數據。

自身支持多種數據結構(此處列出常用數據結構)

string:單一的kv存儲

hash:支持hash計算后的存儲

list:列表存儲

set:無序集合

sortset:有序集合

另外redis還支持作為消息隊列使用

支持不嚴格的事務,redis的事務屬于將多個語句打包一次性執行,但如果在執行過程中發現單個語句發生了錯誤,不會進行回滾,而會繼續往下執行,但好在redis給我們提供了一個watch功能,如果在一次事務中,事務所需要修改到的數據如果發生了改變,執行時會拒絕執行。在事務執行時,redis不會接收任何其他指令,直到事務完成以后再執行其他操作。

redis像磁盤中同步數據的方式有兩種,RDB(snapshot)和AOF(appendonlyfile),RDB類似于我們在mysql中的備份策略,定期的向磁盤進行同步。AOF類似于mysql中的二進制文件一樣,將語句追加至文件中。

redis常用場景,一般作為kv存儲使用或者在需要使用消息隊列時用到。

redis同樣支持主從復制,一主多從,并且支持鏈式復制,主從服務器都異步同步數據,因此同步過程中從服務器仍能接受讀請求,主仍能接受讀寫請求,

同步方式:在從服務鏈接到主服務器會發出同步指令,主服務器收到后會將內存中所有數據同步至RDB(快照)文件中,在發送給從服務器,從服務器在接受到后加載至內存中,以完成同步。

盡管如此redis還是和mysql一樣,面臨主節點意外down機后,不能進行自動主從切換。redis直接提供了解決方案,在redis中有個叫sentinel的組件,他負責監控主節點存活狀態,如果主節點無法聯系,會選舉出從節點變更為主節點。

下面演示一下redis主從,以及基于sentinel實現主節點down機后自動切換

準備了3個節點,一主一從一sentinel

做好時間同步,配置好epel源,直接安裝

[root@localhost ~]# vi /etc/redis.conf

編輯主服務器配置文件,這里做實驗使用只需要修改主配置文件監聽在自己的IP地址上。

redis簡介

編輯從配置文件添加

redis簡介

slaveof  [主ip] [主port]                    #主服務器IP 和端口

啟動服務

redis簡介

登錄主服務器,查看是否以有從服務器,接著可以插入些key 看同步是否成功

redis簡介

插入兩條數據

redis簡介

在從服務器上驗證~說明此事同步成功。

接著我們來配置sentinel節點。

[root@localhost ~]# vi /etc/redis-sentinel.conf 

編輯配置文件

修改以下幾行

sentinel monitor mymaster 192.168.20.108  6379 1

mymaster指明集群名稱,可以隨便給,后面是主節點IP和端口,最后的1代表幾個sentinel認為主節點down了過后就可以進行切換,可以理解為票數。(避免sentinel節點自己于主節點通訊不正常,但能聯系到其他從節點,進行錯誤的切換,在常用情況下應該配置基數個節點的sentinel以避免發生上訴情況)

sentinel down-after-milliseconds mymaster 1000                #此行可不做修改,但這里定義的是多久聯系不到主節點,就認為需要切換,默認是30分鐘,太長了,我們這里實驗用 修改為1分鐘

protected-mode no          #在redis3.2過后添加的安全選項,如果沒有BINDip,且沒有認證方式啟動,會自動啟動保護模式,遠程登陸進去無法做任何操作,這里我們給他指定為不啟用保護模式

daemonize yes                #后臺運行

[root@localhost ~]# redis-server /etc/redis-sentinel.conf –sentinel             #啟動服務

redis簡介

鏈接至sentinel,并且查看是否有主服務器相應信息,這里看到了已經找到主服務器了,接著我去把主服務器關掉

redis簡介

關機后立即之前的從服務器就立即變到主的了~


原創文章,作者:N24_Ghost,如若轉載,請注明出處:http://www.www58058.com/71265

(0)
N24_GhostN24_Ghost
上一篇 2017-03-17
下一篇 2017-03-17

相關推薦

  • 設計模式(一)工廠模式Factory(創建型)

      在面向對象編程中, 最通常的方法是一個new操作符產生一個對象實例,new操作符就是用來構造對象實例的。但是在一些情況下, new操作符直接生成對象會帶來一些問題。舉例來說, 許多類型對象的創造需要一系列的步驟: 你可能需要計算或取得對象的初始設置; 選擇生成哪個子對象實例; 或在生成你需要的對象之前必須先生成一些輔助功能的對象。 在…

    Linux干貨 2015-06-23
  • Linux網絡協議命令介紹(3)

      在上一章中,我們談到了網絡協議以及TCP傳輸層說明,下面我們來介紹一下序列號和確認好有什么區別之外,以及基本的網絡命令。 1、序列號和確認號有什么區別? 2、網絡功能 3、網絡命令 4、配置文件 1、序列號和確認號有什么區別?   發送方與接收方的發送請求,把SYN設置為1,TCP報文出去都有個號碼,隨機生成稱為序…

    Linux干貨 2016-11-29
  • Linux基礎:計算機的組成及其功能

    1. 描述計算機的組成及其功能。
    2. 按系列羅列Linux的發行版,并描述不同發行版之間的聯系與區別。
    3. 描述Linux的哲學思想,按照自己的理解對其解釋性描述。
    4. 說明Linux系統上命令的使用格式;詳細介紹ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、date等命令使用,配合相應實例闡述。
    5. 如何獲取幫助信息,描述man文檔章節劃分。
    6. 羅列發行版基礎目錄名稱命名法則及功用規定。

    2017-12-07
  • 硬鏈接與軟鏈接的聯系與區別

    硬鏈接與軟鏈接的聯系與區別     文件都有文件名與數據,這在 Linux 上被分成兩個部分:用戶數據 (user data) 與元數據 (metadata)。用戶數據,即文件數據塊 (data block),數據塊是記錄文件真實內容的地方;而元數據則是文件的附加屬性,如文件大小、創建時間、所有者等信息。元數據中的inode才是…

    Linux干貨 2016-10-20
  • shell腳本之變量、運算、條件測試。

    概述 程序:指令+數據 程序編程風格: 過程式:以指令為中心,數據服務于指令 對象式:以數據為中心,指令服務于數據 shell程序:提供了編程能力,解釋執行 計算機:運行二進制指令; 編程語言: 低級:             匯編 高級:…

    Linux干貨 2016-08-15
  • httpd

      httpd http服務器程序:   httpd (apache) nginx lighttpd httpd的特性:   高度模塊化: core + modules DSO:dynamic shared object(模塊的動態加載) MPM:Multipath processing Modules (多路處理模塊) &nb…

    Linux干貨 2017-06-04

評論列表(1條)

  • 馬哥教育
    馬哥教育 2017-04-07 18:21

    總結的非常好,可以來一個目錄結構~~~~加油?。?!

欧美性久久久久