在Mbp框架中引入缓存(redis实现)
时间:2020-07-14
本文章向大家介绍在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.应用层中使用
原文地址:https://www.cnblogs.com/mbpframework/p/13039787.html
- 你不知道的javaScript笔记(3)
- 你不知道的javaScript笔记(2)
- WinRT:WebAuthenticationBroker For OAuth认证
- 你不知道的javaScript笔记(1)
- JQuery实现仿sina新浪微博新鲜事滚动
- 简单的jquery拖曵原理js特效实例
- 使用MiniProfiler调试ASP.NET MVC网站性能
- 大金主撑腰 4声母Mynt.com竟36万元结拍
- ASP.NET MVC4 Web API 堆栈将添加指定消息处理功能
- 页面copyright部分始终居于页面底部
- Hammock for REST
- 网页超过一屏时自动浮动在网页最上方的图层特效
- 关于gcc、glibc和binutils模块之间的关系
- 贝叶斯过滤算法
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 网页全屏模式轻松掌握[局部元素全屏展示]
- 终于有人把 Spring 循环依赖讲清楚了!
- Java程序员必须搞懂的 Linux 知识大全!
- Java 8 有多牛逼?打破一切你对接口的认知!
- 写了个牛逼的日志切面,甩锅更方便了!
- iOS开发之CryptoKit
- koroFileHeader更新日志
- 掌握浏览器重绘(reflow)重排(repaint)-前端进阶
- var和let/const的区别
- 刷新/关闭页面之前发送请求
- Web Beacon 刷新/关闭页面之前发送请求
- 解决django无法访问本地static文件(js,css,img)网页里js,cs都加载不了
- python3 logging日志封装实例
- 解决Python中报错TypeError: must be str, not bytes问题
- H5 notification浏览器桌面通知