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