在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.应用层中使用

posted @ 2020-07-14 19:38  mbpframework  阅读(187)  评论(0编辑  收藏  举报