主從複製
- 主數據庫可以進行讀寫操作,當讀寫操作導致數據變化時會自動將數據同步給從數據庫
- slave從數據庫一般都是隻讀的,並且接收主數據庫同步過來的數據
- 一個master可以擁有多個slave,但是一個slave只能對應一個master
哨兵模式
- 監控主從數據庫是否正常運行
- master出現故障時,自動將slave轉化爲master
- 多哨兵配置的時候,哨兵之間也會自動監控
- 多個哨兵可以監控同一個redis
集羣模式
兩臺虛擬機CentOS搭建3 master、3 salve 環境。
(1)下載並解壓
$ cd /root/software
$ wget http://download.redis.io/releases/redis-3.2.4.tar.gz
$ tar -zxvf redis-3.2.4.tar.gz
(2)編譯安裝
$ cd redis-3.2.4
$ make && make install
(3)將 redis-trib.rb 複製到 /usr/local/bin 目錄下
$ cd src
$ cp redis-trib.rb /usr/local/bin/
(3)創建 Redis 節點
$ mkdir redis_cluster
在 redis_cluster 目錄下,創建名爲7000、7001、7002的目錄,並將 redis.conf 拷貝到這三個目錄中
$ mkdir 7000 7001 7002
$ cp redis.conf redis_cluster/7000
$ cp redis.conf redis_cluster/7001
$ cp redis.conf redis_cluster/7002
分別修改這三個配置文件,修改如下內容
port 7000 //端口7000,7002,7003
bind 本機ip //默認ip爲127.0.0.1 需要改爲其他節點機器可訪問的ip 否則創建集羣時無法訪問對應的端口,無法創建集羣
daemonize yes //redis後臺運行
pidfile /var/run/redis_7000.pid //pidfile文件對應7000,7001,7002
cluster-enabled yes //開啓集羣 把註釋#去掉
cluster-config-file nodes_7000.conf //集羣的配置 配置文件首次啓動自動生成 7000,7001,7002
cluster-node-timeout 15000 //請求超時 默認15秒,可自行設置
appendonly yes //aof日誌開啓 有需要就開啓,它會每次寫操作都記錄一條日誌
接着在另外一臺機器上重複以上三步,只是把目錄改爲7003、7004、7005,對應的配置文件也按照這個規則修改即可.
(4)啓動各個節點
第一臺機器上執行
redis-server redis_cluster/7000/redis.conf
redis-server redis_cluster/7001/redis.conf
redis-server redis_cluster/7002/redis.conf
另外一臺機器上執行
redis-server redis_cluster/7003/redis.conf
redis-server redis_cluster/7004/redis.conf
redis-server redis_cluster/7005/redis.conf
(5)檢查 redis 啓動情況
$ ps -aux| grep redis
(6)需要安裝 ruby
$ yum -y install ruby ruby-devel rubygems rpm-build
$ gem install redis
(7)創建集羣
Redis 官方提供了 redis-trib.rb 這個工具,就在解壓目錄的 src 目錄中,第三步中已將它複製到 /usr/local/bin 目錄中,可以直接在命令行中使用了。使用下面這個命令即可完成安裝。
redis-trib.rb create --replicas 1 192.168.31.245:7000 192.168.31.245:7001 192.168.31.245:7002 192.168.31.210:7003 192.168.31.210:7004 192.168.31.210:7005
(8)集羣驗證
在第一臺機器上連接集羣的7002端口的節點,在另外一臺連接7005節點,連接方式爲 redis-cli -h 192.168.31.245 -c -p 7002 ,加參數 -C 可連接到集羣,因爲上面 redis.conf 將 bind 改爲了ip地址,所以 -c 參數不可以省略。在7005節點執行命令 set hello world ,然後在另外一臺7002端口,查看 key 爲 hello 的內容, get hello 。