redis從搭建到分佈式環境搭建

一、安裝

1、去官網下載:http://download.redis.io/releases/

2、redis-2.8.17.tar.gz下載以後的文件放到服務器目錄下(如:/usr/local  以下全部以此路徑)

3、解壓

tar xf redis-2.8.17.tar.gz

4、進入redis-2.8.17目錄下進行編譯和安裝,

編譯:執行make命令

make

安裝:執行make PREFIX=/usr/local/redis install

make PREFIX=/usr/local/redis install

二、啓動

1、進入redis的bin目錄下

cd /usr/local/redis/bin

2、複製redis.conf到/usr/local/redis/bin下

cp /usr/local/redis-2.8.17/redis.conf /usr/local/redis/bin/

3、編輯剛纔修改的文件

vim redis.conf 

搜索 daemonize;默認值爲no,修改爲yes,保存退出

4、啓動:

./redis-server redis.conf 

啓動時若不加redis.conf 不會後臺允許

查看redis進程是否啓動成功:ps -ef|grep redis

5、停止命令

kill  進程號

 或 通過客戶端關閉

./redis-cli shutdown

三、修改遠程端口和連接地址

1、修改端口號

cd /usr/local/redis/bin/

vim redis.conf

搜索 port  默認值:6379

2、外部連接地址

在(三 1)中搜索bind

放開註釋

127.0.0.1表示只有本機可以連接

0.0.0.0表示允許任何ip連接

實際開發中可以指定特定ip可以連接

繼續搜索timeout

0表示沒有超時時間,可以指定一個超時時間:300  單位是秒

保存退出

四、啓動多個redis

方法1 覆蓋端口

./redis-server redis.conf --port  6380
./redis-server redis.conf --port  6381
./redis-server redis.conf --port  6382

方法2 多個配置文件方法:複製redis.conf文件,修改端口號

./redis-server redis6380.conf
./redis-server redis6381.conf
./redis-server redis6382.conf

方法3 copy多個bin目錄,修改每個配置文件的端口,啓動自己的配置文件

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


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


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

五、客戶端的使用

進入bin目錄

./redis-cli 

或者指定端口

#啓動6380
./redis-cli -p 6380
#啓動6381
./redis-cli -p 6381

在客戶端關閉redis命令

shutdown

六、密碼設置

cd /usr/local/redis/bin/

vim redis.conf

搜索 requirepass 

打開註釋,默認密碼是foobared,修改爲自己的密碼即可。

保存退出

密碼生效需要重新啓動redis

啓用密碼後,若使用客戶端會提示沒有授權,每個命令都要授權才能執行。./redis-cli 執行get key命令提示需要授權;執行授權命令 auth 設置的密碼

七、redis事務

 redis事務可以一次執行多個命令並且有以下兩個特徵
   事務是一個單獨的隔離操作:

  • 事務中的所有命令都會被序列化,按順序地執行
  • 事務在執行過程中,不會被其他客戶端發來的命令請求所打斷

事務是一個原子操作:

  • 事務中的命令要麼全部執行,要麼全部不執行

登錄redis客戶端,執行一個事務

取消事務,設置k3值錯誤了,取消掉

八,redis主從複製

主從複製特點

  • Master可以擁有多個Slave; 
  • 多個Slave可以連接同一個Master,還可以連接到其他的Slave;
  • 主從複製不會阻塞Maseter,在同步數據時,Master可以繼續處理Client請求
  • 提供系統的伸縮性

redis主從複製配置,只需在從數據庫的配置文件中加上如下命令即可,主數據庫不需要任何修改

  • slaveof    主數據庫地址  主數據庫端口

 

配置步驟:

  • 從新安裝一份redis作爲從庫
  • 設置端口號:如6380
  • 設置slaveof    主數據庫地址  主數據庫端口
  • 設置masterauth  主庫密碼(主庫未啓用密碼可不用設置)

注意:修改從庫爲後臺啓動,

保存退出,啓動從庫。保證主庫已經啓動服務,自行測試結果。

 

九、redis持久化

redis持久化機制:支持兩種方式RDB和AOF,RDB一定時間取存儲文件(保證效果可用此),AOF默認每秒去存儲歷史命令,官方建議兩種方式同時使用。沒有持久化的redis和mamcache一樣,相當於一個純內存數據庫。不加磁盤存儲數據丟就丟了...

RDB默認開啓redis.conf中的配置如下:

save 900 1    #900秒內超過1個key被修改,則發起快照保存

save 300 10    #300秒內超過10個key被修改,則發起快照保存

save 60 10000    #60秒內超過10000個key被修改,則發起快照保存

dbfilename dump.rdb   #持久化數據存儲在本地文件名

dir  ./   #持久化數據存儲在本地路徑

 

AOF默認開啓redis.conf中的配置如下:

appendonly  no/yes   #啓動aof持久化,持久化有三種方式

appendfsync  always  #收到寫命令立刻寫入磁盤,效率最慢,但是保證完整的持久化

appendfsync  everysec   #每秒寫一次硬盤,性能和持久化方面做的很好

appendfsync  no  #完全依賴os,性能最佳,但是持久化沒有保證

十、redis集羣創建

redis集羣的特點:

(1)所有的redis節點彼此互聯(PING-PONG機制),內部使用二進制協議優化傳輸速度和帶寬

(2)節點的fa11是通過集羣中超過半數的節點檢測失效時才生效

(3)客戶端與 redis節點直連,不需要中間 proxy層,客戶端不需要連接集羣所有節點,連接集羣中任何一個可用節點即可

(4) redis-cluster把所有的物理節點映射到[0-16383]slot上, cluster負責維護 nodec< - >slot< - >value

Reds集羣中內置了16384個哈希槽,當需要在Redis集羣中放置一個key- value時, redis先對key使用crc16算法算出一個結果,然後把結果對16384求餘數,這樣每個key都會對應一個編號在0-16383之間的哈希槽, redis會根據節點數量大致均等的將哈希槽映射到不同的節點

redis集羣的搭建:

redis集羣中至少應該有三個節點,要保證集羣的高可用,需要每個節點有一個備份機,則至少需要6臺服務器

搭建僞分佈式,可用一臺虛擬機運行6個redis實例,然後修改redis的端口即可

修改6臺redis配置文件爲後臺啓動和運行任何ip訪問或者單機的修改端口號

----以下以6臺虛擬機爲例----

6臺虛擬機分別安裝好redis,目錄/usr/local/redis/

集羣環境搭建:

1、分別進入/usr/local/redis/bin目錄,修改redis.conf文件

daemonize yes

bind 0.0.0.0

不需要設置密碼,因爲是6臺虛擬機,所以不需要修改端口號,若是在一臺機器上需要修改端口號。

 

2、使用ruby腳本搭建集羣,需要ruby運行環境

[sxxaad@192 bin] yum -y install ruby rubygems

3、上傳並安裝ruby腳本運行使用的包  以redis-3.3.5.gem爲例

分別上傳以上文件到6臺虛擬機中,完成以後執行以下命令安裝

gem install redis-3.3.5.gem

安裝成功以後分別進入6臺虛擬機的/usr/local/redis-2.8.17/src下查看所有文件,會有一個redis-trib.rb文件,此文件可以移動,給它移動到redis的bin目錄下執行以下命令:

./redis-trib.rb create --replicas 1 192.168.0.1:6379 192.168.0.2:6379 192.168.0.3:6379 192.168.0.4:6379 192.168.0.5:6379 192.168.0.6:6379 

執行之前請自查以下可能會出現的問題:

  • 確保所有redis沒有開啓主從
  • 確保所有的redis.conf文件中的註釋已經打開並且開啓集羣 cluster-enabled yes
  • 停掉所有redis後刪除/usr/local/redis/bin下的dump.rdb和nodes.conf

集羣搭建成功連接客戶端使用以下命令

./redis-cli -p

當使用set/get命令時會自動重定向到某個節點上。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章