redis搭建和數(shù)據(jù)落盤的方法是什么-創(chuàng)新互聯(lián)

本篇內容介紹了“redis搭建和數(shù)據(jù)落盤的方法是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

創(chuàng)新互聯(lián)建站專注于企業(yè)網絡營銷推廣、網站重做改版、天祝藏族自治網站定制設計、自適應品牌網站建設、H5場景定制、商城網站建設、集團公司官網建設、成都外貿網站建設、高端網站制作、響應式網頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為天祝藏族自治等各大城市提供網站開發(fā)制作服務。

一、 redis的編譯安裝

1、依賴的系統(tǒng)包

yum install -y wget gcc make tcl

2、下載包地址

1、各個版本redis的下載地址
http://download.redis.io/releases/
2、本文安裝最新版本4.0.9
wget http://download.redis.io/releases/redis-4.0.9.tar.gz

3、編譯安裝

1、解壓:tar xf redis-4.0.9.tar.gz && cd redis-4.0.9
2、編譯:make
3、編譯測試:make test
4、安裝:make PREFIX=/usr/local/redis install
5、拷貝配置文件到配置文件夾:mkdir  /usr/local/redis/etc && cp  redis-4.0.9/redis.conf  /usr/local/redis/etc/

二、 redis的配置參數(shù)

必要的參數(shù)設置

將“daemonize”屬性設置為“yes”,表示我們會以后臺進程形式啟動Redis服務;
將“port”屬性設置為指定的端口,這里默認為“6379”;
將“l(fā)ogfile”屬性設置為指定的日志路徑;
將“dir”設置為指定的工作目錄
將“requirepass”設定為本機連接的密碼
其余的屬性可以保持默認。

其他參數(shù)設置

bind:指定redis只接收來自該IP的請求,如果不設置,那么將處理所有請求,在生產環(huán)節(jié)中最好設置該項
protected-mode:保護模式,默認是開啟狀態(tài),只允許本地客戶端連接, 可以設置密碼或添加bind來連接
port:指定 redis 運行的端口,默認是 6379
tcp-backlog:TCP監(jiān)聽的大容納數(shù)量,在高并發(fā)的環(huán)境下,你需要把這個值調高以避免客戶端連接緩慢的問題。Linux 內核會把這個值縮小成 /proc/sys/net/core/somaxconn對應的值,要提升并發(fā)量需要修改這兩個值才能達到目的;默認是511
timeout:指定在一個 client 空閑多少秒之后關閉連接(0表示永不關閉)
tcp-keepalive:單位是秒,表示將周期性的使用SO_KEEPALIVE檢測客戶端是否還處于健康狀態(tài),避免服務器一直阻塞,官方給出的建議值是300s,如果設置為0,則不會周期性的檢測
daemonize:默認情況下 redis 不是作為守護進程運行的,如果你想讓它在后臺運行,你就把它改成 yes。當redis作為守護進程運行的時候,它會寫一個 pid 到 /var/run/redis.pid 文件里面
supervised:可以通過upstart和systemd管理Redis守護進程,默認為no,沒有啟動互動
    supervised no - 沒有監(jiān)督互動
    supervised upstart - 通過將Redis置于SIGSTOP模式來啟動信號
    supervised systemd - signal systemd將READY = 1寫入$ NOTIFY_SOCKET
    supervised auto - 檢測upstart或systemd方法基于 UPSTART_JOB或NOTIFY_SOCKET環(huán)境變量
pidfile:配置PID文件路徑,當redis作為守護進程運行的時候,它會把 pid 默認寫到 /var/redis/run/redis_6379.pid 文件里面
loglevel:定義日志級別,可以是下面的這些值:
    debug(記錄大量日志信息,適用于開發(fā)、測試階段)
    verbose(較多日志信息)
    notice(適量日志信息,使用于生產環(huán)境)
    warning(僅有部分重要、關鍵信息才會被記錄)
logfile:日志文件的位置
syslog-enabled:要想把日志記錄到系統(tǒng)日志,就把它改成 yes,也可以可選擇性的更新其他的syslog 參數(shù)以達到你的要求
syslog-ident:設置系統(tǒng)日志的ID
syslog-facility:指定系統(tǒng)日志設置,必須是 USER 或者是 LOCAL0-LOCAL7 之間的值
databases:設置數(shù)據(jù)庫的數(shù)目。默認的數(shù)據(jù)庫是DB 0 ,可以在每個連接上使用select  <dbid> 命令選擇一個不同的數(shù)據(jù)庫,dbid是一個介于0到databases - 1 之間的數(shù)值
always-show-logo:redis啟動時是否顯示login
save <間隔時間(秒)> <寫入次數(shù)>:根據(jù)給定的時間間隔和寫入次數(shù)將數(shù)據(jù)保存到磁盤
    save 900 1:900 秒內如果至少有 1 個 key 的值變化,則保存
    save 300 10:300 秒內如果至少有 10 個 key 的值變化,則保存
    save 60 10000:60 秒內如果至少有 10000 個 key 的值變化,則保存
stop-writes-on-bgsave-error:如果用戶開啟了RDB快照功能,那么在redis持久化數(shù)據(jù)到磁盤時如果出現(xiàn)失敗,默認情況下,redis會停止接受所有的寫請求
rdbcompression:對于存儲到磁盤中的快照,可以設置是否進行壓縮存儲,如果是的話,redis會采用LZF算法進行壓縮
rdbchecksum:在存儲快照后,我們還可以讓redis使用CRC64算法來進行數(shù)據(jù)校驗,但是這樣做會增加大約10%的性能消耗,如果希望獲取到大的性能提升,可以關閉此功能
dbfilename:設置快照的文件名
dir:設置快照文件的存放路徑,這個配置項一定是個目錄,而不能是文件名
requirepass:本機連接的密碼
slaveof <masterip> <masterport>:主從復制,使用 slaveof 來讓一個 redis 實例成為另一個reids 實例的副本,默認關閉
masterauth <master-password>:如果 master 需要密碼認證,就在這里設置,默認不設置
slave-serve-stale-data:當一個 slave 與 master 失去聯(lián)系,或者復制正在進行的時候,slave 可能會有兩種表現(xiàn)
     1) 如果為 yes ,slave 仍然會應答客戶端請求,但返回的數(shù)據(jù)可能是過時,或者數(shù)據(jù)可能是空的在第一次同步的時候
     2) 如果為 no ,在你執(zhí)行除了 info he salveof 之外的其他命令時,slave 都將返回一個 "SYNC with master in progress" 的錯誤
slave-read-only:你可以配置一個 slave 實體是否接受寫入操作
appendonly: 默認redis使用的是rdb方式持久化,這種方式在許多應用中已經足夠用了。但是redis如果中途宕機,會導致可能有幾分鐘的數(shù)據(jù)丟失,根據(jù)save來策略進行持久化,Append Only File是另一種持久化方式,可以提供更好的持久化特性。Redis會把每次寫入的數(shù)據(jù)在接收后都寫入appendonly.aof文件,每次啟動時Redis都會先把這個文件的數(shù)據(jù)讀入內存里,先忽略RDB文件
appendfilename:aof文件名
appendfsync:aof持久化策略的配置
    appendfsync always,表示每次寫入都執(zhí)行fsync,以保證數(shù)據(jù)同步到磁盤
    appendfsync everysec,表示每秒執(zhí)行一次fsync,可能會導致丟失這1s數(shù)據(jù)
    appendfsync no,表示不執(zhí)行fsync,由操作系統(tǒng)保證數(shù)據(jù)同步到磁盤,速度最快
no-appendfsync-on-rewrite:指定是否在后臺aof文件rewrite期間調用fsync,默認為no,表示要調用fsync(無論后臺是否有子進程在刷盤);Redis在后臺寫RDB文件或重寫afo文件期間會存在大量磁盤IO,此時,在某些linux系統(tǒng)中,調用fsync可能會阻塞
auto-aof-rewrite-percentage:指定redis重寫aof文件的條件,默認為100,表示與上次rewrite的aof文件大小相比,當前aof文件增長量超過上次afo文件大小的100%時,就會觸發(fā)background rewrite。若配置為0,則會禁用自動rewrite
auto-aof-rewrite-min-size:指定觸發(fā)rewrite的aof文件大小。若aof文件小于該值,即使當前文件的增量比例達到auto-aof-rewrite-percentage的配置值,也不會觸發(fā)自動rewrite。即這兩個配置項同時滿足時,才會觸發(fā)rewrite
aof-rewrite-incremental-fsync:aof rewrite過程中,是否采取增量文件同步策略,默認為“yes”。 rewrite過程中,每32M數(shù)據(jù)進行一次文件同步,這樣可以減少aof大文件寫入對磁盤的操作次數(shù)
slowlog-log-slower-than:slog log是用來記錄redis運行中執(zhí)行比較慢的命令耗時

三、 redis的單實例啟動

啟動

1、cd  /usr/local/redis
2、./bin/redis-server ./etc/redis.conf

客戶端命令行進入

1、cd  /usr/local/redis
2、./bin/redis-cli -h 127.0.0.1 -p 6379 -a 123456
    127.0.0.1:6379> set name 'beijing'
    OK
    127.0.0.1:6379> get name
    "beijing"

關閉

1、cd  /usr/local/redis
2、./bin/redis-cli -h 127.0.0.1 -p 6379 -a 123456 shutdown

四、 redis的主從配置啟動

1、master,配置文件修改

port 6379
logfile "/data/redis/data6379/redis.log"
pidfile /var/run/redis_6379.pid
dir /data/redis/data6379
requirepass 123456

主redis一般配置為不使用RDB和AOF持久化到硬盤
#save 900 1
#save 300 10
#save 60 10000
appendonly no

2、slave,配置文件修改

port 6380
logfile "/data/redis/data6380/redis.log"
pidfile /var/run/redis_6380.pid
dir /data/redis/data6380
requirepass 123456
slaveof 127.0.0.1 6379
masterauth 123456
slave-read-only yes

從redis可以配置為RDB和AOF持久化到硬盤
save 900 1
save 300 10
save 60 10000
appendonly yes

3、啟動master和slave

1、cd  /usr/local/redis
2、./bin/redis-server ./etc/redis6379.conf
3、./bin/redis-server ./etc/redis6380.conf

4、驗證主從寫入數(shù)據(jù)同步

master
    [root@dbtest1 redis]# ./bin/redis-cli -h 127.0.0.1 -p 6379 -a 123456
    127.0.0.1:6379> get name
    (nil)
    127.0.0.1:6379> set name "beijing"
    OK
    127.0.0.1:6379> get name
    "beijing"

slave
    [root@dbtest1 redis]# ./bin/redis-cli -h 127.0.0.1 -p 6380 -a 123456
    127.0.0.1:6380> get name
    "beijing"

五、 數(shù)據(jù)落盤RDB和AOF的區(qū)別

RDB的回寫方式

同步回寫即SAVE命令,主進程直接向磁盤回寫數(shù)據(jù)。在數(shù)據(jù)大的情況下會導致系統(tǒng)假死很長時間,所以一般不是推薦的
異步回寫即BGSAVE命令,主進程fork后,復制自身并通過這個新的進程回寫磁盤,回寫結束后新進程自行關閉。由于這樣做不需要主進程阻塞,系統(tǒng)不會假死

RDB的特點

* RDB就是Snapshot快照存儲,是默認的持久化方式
* 可理解為半持久化模式,即按照一定的策略周期性的將數(shù)據(jù)保存到磁盤,save <間隔時間(秒)> <寫入次數(shù)>:根據(jù)給定的時間間隔和寫入次數(shù)將數(shù)據(jù)保存到磁盤
* 對應產生的數(shù)據(jù)文件為dump.rdb,通過配置文件中的save參數(shù)來定義快照的周期
* Redis的RDB文件不會壞掉,因為其寫操作是在一個新進程中進行的
* 當生成一個新的RDB文件時,Redis生成的子進程會先將數(shù)據(jù)寫到一個臨時文件中,然后通過原子性rename系統(tǒng)調用將臨時文件重命名為RDB文件,這樣在任何時候出現(xiàn)故障,Redis的RDB文件都總是可用的

AOF的特點

* AOF(Append-Only File)比RDB方式有更好的持久化性
* 由于在使用AOF持久化方式時,Redis會將每一個收到的寫命令都通過Write函數(shù)追加到文件中,類似于MySQL的binlog
* 當Redis重啟時會通過重新執(zhí)行文件中保存的寫命令來在內存中重建整個數(shù)據(jù)庫的內容
* 對應的設置參數(shù)為:
    * appendonly yes,啟用AOF持久化方式
    * appendfilename appendonly.aof,AOF文件的名稱,默認為appendonly.aof
    * appendfsync always,每次收到寫命令就立即強制寫入磁盤,是最有保證的完全的持久化,但速度也是最慢的,一般不推薦使用
    * appendfsync everysec,每秒鐘強制寫入磁盤一次,在性能和持久化方面做了很好的折中,是受推薦的方式
    * appendfsync no,完全依賴OS的寫入,一般為30秒左右一次,性能最好但是持久化最沒有保證,不被推薦
* AOF的完全持久化方式同時也帶來了另一個問題,持久化文件會變得越來越大,為了壓縮AOF的持久化文件,Redis提供了bgrewriteaof命令,收到此命令后Redis將使用與快照類似的方式將內存中的數(shù)據(jù)以命令的方式保存到臨時文件中,最后替換原來的文件,以此來實現(xiàn)控制AOF文件的增長

按照以下優(yōu)先級進行數(shù)據(jù)的恢復

1、如果只配置AOF,重啟時加載AOF文件恢復數(shù)據(jù)
2、如果同時配置了RDB和AOF,啟動時只加載AOF文件恢復數(shù)據(jù)
3、如果只配置RDB,啟動是將加載RDB文件恢復數(shù)據(jù)
(需要注意的為:使用AOF備份數(shù)據(jù)進行恢復數(shù)據(jù)時需要主庫開啟appendonly yes,才會恢復數(shù)據(jù);使用RDB備份數(shù)據(jù)進行恢復數(shù)據(jù)時,不需要主庫開啟對應參數(shù))

六、主庫宕機后的處理

1、主庫出現(xiàn)宕機

此處模擬主庫宕機
1、cd  /usr/local/redis
2、./bin/redis-cli -h 127.0.0.1 -p 6379 -a 123456 shutdown

2、將slave上的同步狀態(tài)取消,避免主庫在未完成數(shù)據(jù)恢復前就重啟,進而直接覆蓋掉從庫上的數(shù)據(jù),導致所有的數(shù)據(jù)丟失

127.0.0.1:6380> slaveof no one

3、拷貝從機數(shù)據(jù)到主機上

1、拷貝AOF數(shù)據(jù)用于恢復
cp data6380/appendonly.aof data6379/appendonly.aof
主庫./etc/redis6379.conf開啟appendonly yes

2、拷貝RDB數(shù)據(jù)用于恢復
127.0.0.1:6380> BGSAVE
cp data6380/dump.rdb data6379/dump.rdb

4、主庫重新啟動

1、cd  /usr/local/redis
2、./bin/redis-server ./etc/redis6379.conf

5、重新進行主從同步的配置,這個時候就不用再指定密碼了,有原始記錄

127.0.0.1:6380> slaveof 127.0.0.1 6379

“redis搭建和數(shù)據(jù)落盤的方法是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注創(chuàng)新互聯(lián)網站,小編將為大家輸出更多高質量的實用文章!

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

分享題目:redis搭建和數(shù)據(jù)落盤的方法是什么-創(chuàng)新互聯(lián)
地址分享:http://www.muchs.cn/article8/dodeop.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供微信小程序服務器托管、軟件開發(fā)品牌網站建設、虛擬主機、電子商務

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

網站托管運營