redis資料庫安裝 redis持久化及主從複製

来源:https://www.cnblogs.com/omgasw/archive/2019/04/23/10755405.html
-Advertisement-
Play Games

安裝redis-5.0.4 修改配置文件 創建命令鏈接 設置redis開機自啟動 啟動redis服務 測試連接 安裝過程可能出現的問題 1.CentOS預設沒有安裝gcc,這會導致我們無法make成功 2.make時報如下錯誤: zmalloc.h:50:31: fatal error: jemal ...


----------------------------------------安裝redis-5.0.4----------------------------------------

wget http://download.redis.io/releases/redis-5.0.4.tar.gz
tar zxvf redis-5.0.4.tar.gz -C /usr/local/
mv /usr/local/redis-5.0.4 /usr/local/redis
cd /usr/local/redis
make

修改配置文件

bind 192.168.100.101    #配置監聽地址
protected-mode no    #關閉保護模式,允許外網連接資料庫
daemonize yes    #開啟以後臺方式運行
logfile "/usr/local/redis/log/redis.log"    #日誌文件路徑
dir /usr/local/redis/    #dump快照存放路徑
mkdir /usr/local/redis/log;touch /usr/local/redis/log/redis.log  #創建日誌文件

創建命令鏈接

ln -s /usr/local/redis/src/redis-cli /usr/local/bin/redis
ln -s /usr/local/redis/src/redis-cli /usr/local/bin/redis-cli
ln -s /usr/local/redis/src/redis-server /usr/local/bin/redis-server

設置redis開機自啟動

echo "redis-server /usr/local/redis/redis.conf" >> /etc/rc.local
chmod +x /etc/rc.local

啟動redis服務

redis-server /usr/local/redis/redis.conf

測試連接

redis-cli

 

安裝過程可能出現的問題

1.CentOS預設沒有安裝gcc,這會導致我們無法make成功

yum install gcc-c++ -y  #解決辦法:yum安裝開發環境

2.make時報如下錯誤:

zmalloc.h:50:31: fatal error: jemalloc/jemalloc.h: No such file or directory

#include <jemalloc/jemalloc.h>

              ^

compilation terminated.

make[1]: *** [adlist.o] Error 1

make[1]: Leaving directory `/root/redis-5.0.4/src'

make: *** [all] Error 2

原因是jemalloc重載了Linux下的ANSI C的malloc和free函數

make MALLOC=libc  #解決辦法:make時添加參數

3.make之後,會出現一句提示

Hint: To run 'make test' is a good idea ;) 

但是不測試,通常是可以使用的;若我們運行make test ,會有如下提示

[devnote@devnote src]$ make test

You need tcl 8.5 or newer in order to run the Redis test

make: ***[test] Error_1

yum install tcl -y  #解決辦法:yum安裝tcl8.5

 

----------------------------------------redis持久化方式----------------------------------------

RDB持久化:將Reids在記憶體中的資料庫記錄定時dump到磁碟上,類似於快照功能(半持久化模式)

RDB方式配置:vim /usr/local/redis/redis.conf
save 900 1    #開啟RDB快照功能,在900秒內完成一個key值得變動觸發快照功能,如若將所有save配置項都註釋掉,那麼則將關閉RDB快照功能
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes    #當RDB快照後臺進程失敗,不影響用戶得寫操作
rdbcompression yes    #是否將RDB快照文件壓縮,關閉後會增加性能
rdbchecksum no    #關閉RDB快照文件的檢查校驗,增加性能
dbfilename dump.rdb    #快照文件的名稱
dir ./    #快照文件的存儲路徑,./為redis的安裝目錄下

 

AOF持久化:append only file--原理是將Reids的操作日誌以追加的方式寫入文件,近似實時性(全持久化模式)

AOF持久化方式配置:vim /usr/local/redis/redis.conf
#save 900 1
#save 300 10
#save 60 10000
appendonly yes    #開啟AOF持久化方式
appendfilename "appendonly.aof"    #指定持久化的文件
appendfsync everysec    #頻率,具體參數見下表
no-appendfsync-on-rewrite no    #如若設置為yes,則redis執行的命令會存放到緩衝區,待系統自動同步到硬碟
auto-aof-rewrite-percentage 100    #若當前寫入的AOF文件達到了上次rewrite文件大小的100%,則觸發rewrite操作
auto-aof-rewrite-min-size 64mb    #設置AOF持久化重寫文件的最小值,當達到60M並且符合100%的條件時,則觸發rewrite操作
選項 同步頻率
always 每一次寫操作都會調用一次fsync,這時數據是最安全的,當然,由於每次都會執行fsync,所以其性能也會受到影響
everysec 預設每隔一秒進行一次fsync調用,將緩衝區中的數據寫到磁碟,但是當這一次的fsync調用時長超過1秒時。Redis會採取延遲fsync的策略,再等一秒鐘。也就是在兩秒後再進行fsync,這一次的fsync就不管會執行多長時間都會進行
no redis不會主動調用fsync去將AOF日誌內容同步到磁碟,所以這一切就完全依賴於操作系統的調試了。對大多數Linux操作系統,是每30秒進行一次fsync,將緩衝區中的數據寫到磁碟上

 

 

 

----------------------------------------redis主從複製----------------------------------------

同步類型:

1.全量同步:

redis全量複製一般發生在Replica初始化階段,這時Replica需要將Master上的所有數據都複製一份。具體步驟如下: 

1)從伺服器連接主伺服器,發送SYNC命令(從伺服器向主伺服器初次同步時,不會影響主伺服器接收客戶端的請求); 

2)主伺服器接收到SYNC命名後,開始執行BGSAVE命令生成RDB文件並使用緩衝區記錄此後執行的所有寫命令; 

3)主伺服器BGSAVE執行完後,向所有從伺服器發送快照文件,併在發送期間繼續記錄被執行的寫命令; 

4)從伺服器收到快照文件後丟棄所有舊數據,載入收到的快照; 

5)主伺服器快照發送完畢後開始向從伺服器發送緩衝區中的寫命令; 

6)從伺服器完成對快照的載入,開始接收命令請求,並執行來自主伺服器緩衝區的寫命令; 

完成上面幾個步驟後就完成了從伺服器數據初始化的所有操作,從伺服器此時可以接收來自用戶的讀請求

2.增量同步:

redis增量複製是指Replica初始化後開始正常工作時主伺服器發生的寫操作同步到從伺服器的過程。 增量複製的過程主要是主伺服器每執行一個寫命令就會向從伺服器發送相同的寫命令,從伺服器接收並執行收到的寫命令

同步策略:

主從剛剛連接的時候,進行全量同步;全同步結束後,進行增量同步;如果有需要Replica在任何時候都可以發起全量同步;redis策略是,無論如何,首先會嘗試進行增量同步,如不成功,要求從機進行全量同步

註:如果多個Replica斷線了,需要重啟的時候,因為只要Replica啟動,就會發送sync請求和主機全量同步,當多個同時出現的時候,可能會導致Master IO劇增導致宕機

建議開啟master主伺服器的持久化功能,避免出現master重啟後,數據無法恢復;

主從配置:

Master配置 vim /usr/local/redis/redis.conf
min-replicas-to-write 2    #設置replica節點的數量,如果replica節點數量少於此值,那麼master節點將停止客戶端的一切寫請求
min-replicas-max-lag 10    #master與replica之間同步數據的超時時間,若超過此時間,master節點將停止客戶端的一切寫操作
Replica配置 vim /usr/local/redis/redis.conf
replicaof 192.168.100.101 6379    #指定master的ip地址以及埠
masterauth 123123    #指定master的連接密碼
驗證主從複製
192.168
.100.101:6379> info replication #查看複製信息

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 資料庫設計 物理設計: 選擇合適的資料庫管理系統。 考慮因素:成本,業務場景,開發語言,功能,操作系統等。 選擇合適的資料庫管理系統。 考慮因素:成本,業務場景,開發語言,功能,操作系統等。 Oracle 2.定義資料庫,表及欄位,要符合命名規範。 選擇存儲引擎:這裡以MySQL為例 選擇存儲引擎: ...
  • 1. 備份與還原的基礎說明 我們知道在DBA的日常工作中,SQL Server 資料庫的恢復請求偶有發生,可能是用作數據的追蹤,可也可能能是資料庫的災難恢復。 資料庫常用的備份命令如下: 備份文件的命名格式為:資料庫名字_備份類型(Full或Diff或Trn的一種)_時間格式.文件類型(bak或tr ...
  • 1、通過yum安裝: yum install redis 2、設置redis.conf中daemonize為yes。設置密碼: requirepass 3、安裝完後的啟動腳本是完善的,/etc/init.d/redis,不需要再另外操作。 查看啟動列表: chkconfig --list 安裝完可以 ...
  • --語 句 功 能--數據操作SELECT --從資料庫表中檢索數據行和列INSERT --向資料庫表添加新數據行DELETE --從資料庫表中刪除數據行UPDATE --更新資料庫表中的數據 --數據定義 CREATE TABLE --創建一個資料庫表DROP TABLE --從資料庫中刪除表 A ...
  • 由於資料庫存的是整個字元串組到一起了,C#代碼是這個樣子的。 在sqlserver中存儲的實際值是:20190416124941。那麼直接轉換? 所以在sqlserver中查詢的時候我們要進行轉化,因為在mssql中進行轉換需要是有標準的 例如/ : 等符號。那麼我們就進行截取吧。 最後就完事了。 ...
  • 加鎖的主要目的是為了防止併發操作時導致的數據不一致等問題,鎖分為共用鎖(S)、更新鎖(U)、排他鎖(X),共用鎖與更新只是單向相容?傳說中的單相思? 事務 事務能保證數據操作的原子性,要麼內部操作都提交,要麼都回退。事務內部某個地方出錯時,可以回滾前面的操作,比如更新、刪除等。 共用鎖 共用鎖允許並 ...
  • 在資料庫的鎖機制中介紹過,資料庫管理系統(DBMS)中的併發控制的任務是確保在多個事務同時存取資料庫中同一數據時不破壞事務的隔離性和統一性以及資料庫的統一性。 樂觀併發控制(樂觀鎖)和悲觀併發控制(悲觀鎖)是併發控制主要採用的技術手段。 無論是悲觀鎖還是樂觀鎖,都是人們定義出來的概念,可以認為是一種 ...
  • 一、統計語句 1、--統計當前【>當天00點以後的數據】 SELECT * FROM 表 WHERE CONVERT(Nvarchar, dateandtime, 111) = CONVERT(Nvarchar, GETDATE(), 111) ORDER BY dateandtime DESC 2 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...