在Mbp框架中引入快取(redis實現)
阿新 • • 發佈:2020-07-14
一,快取應用
1.引入快取解決什麼問題
- 提高效能
- 提升併發能力
2.引入快取帶來的問題
- 快取資料和資料庫一致性
- 快取穿透,擊穿,雪崩
- 快取併發訪問控制
二,Redis
1.Redis
- 效能高
- 分散式快取,可做高可用,高併發部署
- 支援多種資料庫型別
- 支援事務
2.Redis部署方式
1.單機部署
- 這種部署不適合生產環境,可以用於測試環境和開發環境
2.主從+哨兵系統
- 這種部署是redis高可用部署的一種方式,主要是解決高可用。適合讀多寫少的場景。
3.叢集部署
- 這種部署方式適合對資料量大,且寫入比較多的場景。
3.Redis配置(主從+哨兵系統)
1.部署架構
2.網路規劃
主機 | 埠 | 元件 | 備註 |
---|---|---|---|
192.168.200.129 | 6381 | Redis-Master | 開啟防火牆埠6381 |
192.168.200.129 | 6382 | Redis-Slave | 開啟防火牆埠6382 |
192.168.200.129 | 6383 | Redis-Slave | 開啟防火牆埠6383 |
192.168.200.129 | 26379 | Redis-Sentinel | 開啟防火牆埠26379 |
192.168.200.129 | 26380 | Redis-Sentinel | 開啟防火牆埠26380 |
3.centos7.x部署(在生產環境上建議使用docker部署,docker部署更方便,此處為了學習理解採用原生部署,切勿在生產環境採用這種配置方式,考慮維護的因素還不夠,比如自啟動等等)
-
整個的配置步驟可以分為3步,1.準備安裝環境,2.配置檔案編輯,和其他程式執行一樣,redis依賴外部設定的一些配置,3.依次執行redis主從叢集和哨兵系統叢集
-
選取/opt/redis為安裝路徑
-
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
#下載程式碼 -
tar xzf redis-5.0.5.tar.gz
#解壓 -
cd redis-5.0.5
-
make
-
cd ../
-
mkdir redis1
-
mkdir redis2
-
mkdir redis3
-
mkdir sentinel1
-
mkdir sentinel2
-
截至到這裡,目錄已經建立好,接下來就是弄配置檔案了
-
Redis-master的配置檔案
daemonize yes port 6381 logfile "6381.log" dir "/opt/redis/redis1" requirepass "123456" masterauth "123456" dbfilename "dump-6381.rdb" bind 192.168.200.129 127.0.0.1 appendonly yes appendfilename "aof-6381.aof" appendfsync everysec no-appendfsync-on-rewrite yes auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb
-
Redis-slave的配置6382
daemonize yes port 6382 logfile "6382.log" dir "/opt/redis/redis2" requirepass "123456" masterauth "123456" dbfilename "dump-6382.rdb" bind 192.168.200.129 127.0.0.1 appendonly yes appendfilename "aof-6382.aof" appendfsync everysec no-appendfsync-on-rewrite yes auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb slaveof 192.168.200.129 6381
-
Redis-slave的配置6383
daemonize yes port 6383 logfile "6383.log" dir "/opt/redis/redis3" requirepass "123456" masterauth "123456" dbfilename "dump-6383.rdb" bind 192.168.200.129 127.0.0.1 appendonly yes replica-read-only yes appendfilename "aof-6383.aof" appendfsync everysec no-appendfsync-on-rewrite yes auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb slaveof 192.168.200.129 6381
-
Sentinel的配置26379
port 26379 daemonize yes logfile "26379.log" dir "/opt/redis/sentinel1" sentinel monitor mymaster 192.168.200.129 6381 2 sentinel down-after-milliseconds mymaster 30000 sentinel parallel-syncs mymaster 1 sentinel failover-timeout mymaster 15000 sentinel auth-pass mymaster 123456 bind 192.168.200.129 127.0.0.1
-
Sentinel的配置26380
port 26380 daemonize yes logfile "26380.log" dir "/opt/redis/sentinel2" sentinel monitor mymaster 192.168.200.129 6381 2 sentinel down-after-milliseconds mymaster 30000 sentinel parallel-syncs mymaster 1 sentinel failover-timeout mymaster 15000 sentinel auth-pass mymaster 123456 bind 192.168.200.129 127.0.0.1
-
到此配置已經完成了,接下來要啟動這個Redis叢集了
-
[root@code redis]# src/redis-server ../redis1/redis.conf [root@code redis]# src/redis-server ../redis2/redis.conf [root@code redis]# src/redis-server ../redis3/redis.conf [root@code redis]# src/redis-sentinel ../sentinel1/sentinel.conf [root@code redis]# src/redis-sentinel ../sentinel2/sentinel.conf
-
接下來就是檢驗哨兵系統是否正常工作。方法:讓master停止執行,然後檢查sentinel的日誌即可,或者檢視其他兩個從副本的執行資訊。
-
#### 大概的一些命令 ps -ef | grep redis # 得到程序的p_id skill p_id src/redis-cli -p 6382 auth 123456 info
-
master------------->slave,不是雙向的