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

  • 相关阅读:
    大的FIbonacci数列_Java求法
    HDU1134_Game of Connections 卡特兰数
    oracle中查询锁表
    SpringBoot之使用Druid连接池以及SQL监控和spring监控
    用vue封装插件并发布到npm
    vue 预览 Excel 表格
    vue + elementUI 表格 底部 合计总数
    springboot项目中实现访问druid内置监控页面
    解决Elementui eltable合计 showsummary不显示,样式混乱问题
    Druid连接池:慢查询监控
  • 原文地址:https://www.cnblogs.com/mbpframework/p/13039787.html
Copyright © 2020-2023  润新知