redis安裝和主從搭建(redis學習筆記2)
redis安裝環境
redis是C語言開發,建議在linux上執行。
- 安裝redis需要先將官網下載的原始碼進行編譯,編譯依賴gcc環境,如果沒有gcc環境,需要安裝gcc
yum install gcc-c++
2. 下載原始碼包
wget http://download.redis.io/releases/redis-3.2.9.tar.gz(根據需要下載自己版本)
3.解壓原始碼
tar -zxvf redis-3.2.9.tar.gz
4.進入解壓後的目錄進行編譯
cd redis-3.2.9
5.安裝到指定目錄,如 /usr/local/redis
make PREFIX=/usr/local/redis install
6.拷貝配置檔案到安裝目錄下進入原始碼目錄,裡面有一份配置檔案 redis.conf,然後將其拷貝到安裝路徑下
cd /usr/local/redis
mkdir conf
cp /home/tools/redis-3.2.9/redis.conf /usr/local/redis/conf/
redis啟動
前端模式啟動
直接執行bin/redis-server將以前端模式啟動,前端模式啟動的缺點是ssh命令視窗關閉則redis-server程式結束,不推薦使用此方法。如下圖:
後端模式啟動
修改redis.conf配置檔案, daemonize yes 以後端模式啟動。
執行如下命令啟動redis:(要在安裝目錄中)
./bin/redis-server ./redis.conf
啟動多個redis程序
啟動多個redis程序意義:一個redis代表一個redis服務(伺服器)。
方法1:
啟動時指定埠可在一臺伺服器啟動多個redis程序。(接著上面6379的redis)
./bin/redis-server ./redis.conf --port 6380
方法2(推薦此方法):
- 建立多個redis目錄,以埠號命名,比如:建立6379、6380兩個目錄,將redis的安裝檔案bin和conf中檔案拷貝至這兩個目錄。
- 修改6379目錄下的redis.conf設定埠號為6379
- 修改6380目錄下的redis.conf設定埠號為6380
- 啟動6379和6380目錄下的redis-server程式:
cd 6379
./bin/redis-server . /redis.conf
cd 6380
./bin/redis-server . /redis.conf
redis停止
強行終止Redis程序可能會導致redis持久化資料丟失。正確停止Redis的方式應該是向Redis服務傳送SHUTDOWN命令,方法為:
./bin/redis-cli shutdown save
連線本機6379埠的redis服務執行shutdown 停止
save:在停止redis服務之前將所有的資料持久化儲存。
停止6380的redis,執行:
./bin/redis-cli -p 6380 shutdown save
redis客戶端
學習意義:redis是服務端,要操作服務端(存取資料)是通過客戶端。
在redis的安裝目錄中有redis的客戶端,即redis-cli(Redis Command Line Interface),它是Redis自帶的基於命令列的Redis客戶端。
連線redis服務端
執行bin/redis-cli連線redis服務端:(-h ip 根據實際輸入)
到此redis的安裝和redis服務的啟動和客服端的連線就完畢了。
複製:
通常為被複制方(master)主動將資料傳送到複製方(slave),複製方接收到資料儲存在當前例項,最終目的是為了保證雙方的資料一致,同時也是降低了master的壓力。
Redis的複製方式有兩種,一種是主(master)-從(slave)模式,一種是從(slave)-從(slave)模式.
複製流程圖
1、slave向master傳送sync命令。
2、master開啟子程序執行bgsave寫入rdb檔案,同時將子程序接收到的寫命令快取起來。
3、子程序寫完,父程序得知,開始將RDB檔案傳送給slave。
4、master傳送完RDB檔案,將快取的命令也發給slave。
5、master增量的把寫命令發給slave。
主從複製:
第1步:cp reids.conf redis2.conf(複製兩個redis.conf配置檔案,一個用來作為master的,一個是slave,我是使用上面啟動多個redis程序的方法2的)
第2步:Vim redis2.conf(slave)修改6380中配置檔案讓6380作為6379的從機
第3步:slaveof 192.168.0.12 6379(master的地址)
第4步:Vim redis.conf (master)6379
第5步:bind 0.0.0.0 #無ip 都可以訪問(或者是本機的ip因為是一個主機模擬的)
第6步:./redis-server ../redis.conf #master(啟動6379的redis)
第7步./redis-server ../redis.2conf #slave (啟動6380的redis)
Ps:是否成功set get請求來判斷或執行info命令role
從上面看6379是作為主機master了,我們再看看6380的
判斷是否成功:
1、master客戶端set值,slave客戶端能不能獲取到
2、config get 'slaveof*'
到此redis的master和slave就搭建完畢。