1. 程式人生 > 實用技巧 >在Mbp框架中引入快取(redis實現)

在Mbp框架中引入快取(redis實現)

一,快取應用

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,不是雙向的

三,Mbp中使用Redis

1.模組化載入

2.封裝

3.應用層中使用