当前位置: 首页 > news >正文

Redis 主从复制+哨兵+集群

1、总结写在前面

Redis 集群 = 数据分片 + 高可用性

Redis 哨兵 = 主从复制 + 故障转移

2、主从复制

2.1、准备配置

查看docker 容器 ip

docker inspect 容器id | grep IPAddressdocker inspect -f='{{.Name}} {{.NetworkSettings.IPAddress}}' $(docker ps -aq)

修改配置文件

初始配置文件见 => redis.conf

  • 远程访问
    • bind 0.0.0.0
    • protected-mode no
  • 主机设置
    • replicaof 172.17.0.2 6379
  • 主机访问密码
    • masterauth 111111

redis_6379.conf

bind 0.0.0.0
protected-mode no
port 6379
pidfile /var/run/redis6379.pid
logfile "/data/6379.log"
dbfilename dump6379.rdb
dir /data
masterauth 111111
requirepass 111111
appendonly yes
appendfilename "appendonly.aof"
appenddirname "appendonlydir"

redis_6380.conf

bind 0.0.0.0
protected-mode no
port 6379
pidfile /var/run/redis6380.pid
logfile "/data/6380.log"
dbfilename dump6380.rdb
dir /data
replicaof 172.17.0.2 6379
masterauth 111111
requirepass 111111
appendonly yes
appendfilename "appendonly.aof"
appenddirname "appendonlydir"

redis_6381.conf

bind 0.0.0.0
protected-mode no
port 6379
pidfile /var/run/redis6381pid
logfile "/data/6381.log"
dbfilename dump6381.rdb
dir /data
replicaof 172.17.0.2 6379
masterauth 111111
requirepass 111111
appendonly yes
appendfilename "appendonly.aof"
appenddirname "appendonlydir"

2.2、启动

docker run --name redis79  \
-v /usr/local/redis7.2.4/6379/data:/data  \
-v /usr/local/redis7.2.4/6379/conf:/usr/local/etc/redis \
-p 6379:6379 -d 9b38108e295d \
redis-server /usr/local/etc/redis/redis6379.conf --port 6379
docker run --name redis80  \
-v /usr/local/redis7.2.4/6380/data:/data  \
-v /usr/local/redis7.2.4/6380/conf:/usr/local/etc/redis \
-p 6380:6380 -d 9b38108e295d \
redis-server /usr/local/etc/redis/redis6380.conf --port 6380
docker run --name redis81  \
-v /usr/local/redis7.2.4/6381/data:/data  \
-v /usr/local/redis7.2.4/6381/conf:/usr/local/etc/redis \
-p 6381:6381 -d 9b38108e295d \
redis-server /usr/local/etc/redis/redis6381.conf --port 6381

在这里插入图片描述

查看主从信息 info replication
在这里插入图片描述

主从关键点演示

从机不可以执行写命令

在这里插入图片描述

从机从头开始复制

先下线6381(此时master未插入数据),之后master执行set,再上线6381,6381复制master全量数据

在这里插入图片描述

主机下线后,主从关系不会变化

可以看到 redis79下线再上线,主从关系没有变化,只是从机的 master_link_status up down转换
在这里插入图片描述

2.3、主从复制工作流程

  1. 建立连接
    • 节点发送slaveof命令与主节点建立连接
  2. 数据同步
    • 主节点会执行bgsave命令生成RDB快照文件,并将其发送给从节点
    • 全量复制=>在节点初始化时,将主节点的数据一次性同步到从节点
    • 增量复制=>同步自上次同步之后发生变更的数据(从机重启之后增量复制,具体是记录一个偏移量)
  3. 命令传播
    • 同步完成后,进入命令传播阶段,在此阶段,主节点将持续向从节点发送写命令

3、Redis哨兵

由于主从复制在master挂了之后,不会自动选取新的master,故引入哨兵。哨兵监控master和slave,当master挂了之后,在slave中选出新master

sentinel.conf

3.1、准备配置

查看 master 容器 IP,用于后面设置 master IP
在这里插入图片描述

sentinel26379.conf

protected-mode no
port 26379
daemonize yes
pidfile /var/run/redis-sentinel26379.pid
logfile "/data/sentinel26379.log"
dir /data
sentinel monitor mymaster 172.17.0.2 6379 2
sentinel auth-pass mymaster 111111

sentinel26380.conf

protected-mode no
port 26380
daemonize yes
pidfile /var/run/redis-sentinel26380.pid
logfile "/data/sentinel26380.log"
dir /data
sentinel monitor mymaster 172.17.0.2 6379 2
sentinel auth-pass mymaster 111111

sentinel26381.conf

protected-mode no
port 26381
daemonize yes
pidfile /var/run/redis-sentinel26381.pid
logfile "/data/sentinel26381.log"
dir /data
sentinel monitor mymaster 172.17.0.2 6379 2
sentinel auth-pass mymaster 111111

3.2、启动Redis

docker run --name redis6379  \
-v /usr/local/redis7.2.4/6379/data:/data  \
-v /usr/local/redis7.2.4/6379/conf:/usr/local/etc/redis \
-p 6379:6379 -d 9b38108e295d \
redis-server /usr/local/etc/redis/redis_6379.conf --port 6379

3.3、启动哨兵

docker run --name redis-sentinel26379 \
-v /usr/local/redis7.2.4/6379/conf/sentinel26379.conf:/usr/local/etc/redis/sentinel.conf \
-d 9b38108e295d
docker exec -it redis-sentinel26379 /bin/bash
redis-sentinel /usr/local/etc/redis/sentinel.conf

3.4、效果

所有启动的容器展示

在这里插入图片描述

搭建完成后主从关系

在这里插入图片描述

下线 6379 主机之后再上线主从关系

选举新的master,旧主变为slave

在这里插入图片描述

3.4、哨兵运行流程和选举原理

1、哨兵集群监控 master

2、sdown : sentinel 发送心跳包,一定时间没有收到master的回复,就认为主观下线

3、odown : 当有 quorum 个 sentinel 认为主观下线,就认为 master 客观下线

4、选出哨兵 leader (RAFT算法)

5、哨兵 leader 选出新master slaveof on one

- 比较优先级 `repliica-priority`  (优先级数值小的)
- 比较复制偏移量 `offset` (偏移量大的)
  • 比较 run id (run id 小的)

6、leader 让其他 slave 认新master

7、leader 让老master 降级,成为新 master 的 slave

3.5、哨兵使用建议

1、使用哨兵集群,保证高可用

2、哨兵节点的数量应该为奇数

3、哨兵集群 + 主从复制,不能保证数据零丢失

4、Redis集群

Redis 集群 = 数据分片 + 高可用性。在这种模式下,数据被分散存储在多个节点上,每个节点只保存部分数据。这提高了系统的可扩展性和性能。通过一致性哈希,集群能够实现自动的数据分片,同时通过节点间的通信保持数据的同步和状态的一致。

Redis 哨兵 = 主从复制 + 故障转移。当主节点发生故障时,哨兵节点会自动将从节点升级为新的主节点,并通知其他从节点和客户端更新配置。这种模式的优势在于其自动化的故障恢复机制,提高了系统的可用性,并且配置简单。

业务需要处理大量数据并且要求高性能,集群模式更合适

业务对数据量的要求不高,但希望建立一个简单且具有高可用性的缓存系统,哨兵模式更合适

4.1、槽映射实现方法和对比

在这里插入图片描述

4.2、集群搭建

配置基本相同,改下端口和文件名

bind 0.0.0.0
protected-mode no
port 7301
logfile "/data/cluster7301.log"
pidfile /data/cluster7301.pid
dir /data
dbfilename dump7301.rdb
appendonly yes
appendfilename "appendonly7301.aof"
requirepass 111111
masterauth 111111cluster-enabled yes
cluster-config-file nodes-7301.conf
cluster-node-timeout 5000

启动六个实例

docker run --name redis7301  \
-v /usr/local/redis7.2.4/cluster/data:/data  \
-v /usr/local/redis7.2.4/cluster/conf/redis-cluster-7301.conf:/usr/local/etc/redis/redis.conf \
-p 7301:7301 -d 9b38108e295d \
redis-server /usr/local/etc/redis/redis.conf --port 7301
docker run --name redis7306  \
-v /usr/local/redis7.2.4/cluster/data:/data  \
-v /usr/local/redis7.2.4/cluster/conf/redis-cluster-7306.conf:/usr/local/etc/redis/redis.conf \
-p 7306:7306 -d 9b38108e295d \
redis-server /usr/local/etc/redis/redis.conf --port 7306

启动容器并查看IP

docker inspect -f='{{.Name}} {{.NetworkSettings.IPAddress}}' $(docker ps -aq)

在这里插入图片描述

构建主从关系

进入容器 redis 7301

docker exec -it redis7301 /bin/bash

将六个节点加入到集群,一主一从

redis-cli -p 7301 -a 111111 --cluster create --cluster-replicas 1 \
172.17.0.7:7306 \
172.17.0.6:7305 \
172.17.0.5:7304 \
172.17.0.4:7303 \
172.17.0.3:7302 \
172.17.0.2:7301

在这里插入图片描述

查看集群和节点状态

在这里插入图片描述

操作集群

集群需要路由到位 ,即命令中添加 -c

在这里插入图片描述

查看key属于哪个槽

cluster keyslot key

在这里插入图片描述

4.3、主从切换(演示)

在这里插入图片描述

在这里插入图片描述

4.4、故障转移(演示)

redis7306 重新上线后,主从关系变了,为了改回初始的主从关系,登录到原来的主机使用 cluster failover

在这里插入图片描述

4.5、扩容(演示)

docker run --name redis7307  \
-v /usr/local/redis7.2.4/cluster/data:/data  \
-v /usr/local/redis7.2.4/cluster/conf/redis-cluster-7307.conf:/usr/local/etc/redis/redis.conf \
-p 7307:7307 -d 9b38108e295d \
redis-server /usr/local/etc/redis/redis.conf --port 7307
docker run --name redis7308  \
-v /usr/local/redis7.2.4/cluster/data:/data  \
-v /usr/local/redis7.2.4/cluster/conf/redis-cluster-7308.conf:/usr/local/etc/redis/redis.conf \
-p 7308:7308 -d 9b38108e295d \
redis-server /usr/local/etc/redis/redis.conf --port 7308
redis-cli -a 111111 -p 7301  --cluster add-node \
172.17.0.8:7307 \
172.17.0.2:7301

redis-cli -a 111111 -p 7301 --cluster add-node 要加入的节点信息【IP:PORT】 集群中任一节点信息【IP:PORT】

在这里插入图片描述

查看集群状态(新节点未分配槽位)

redis-cli -a 111111 -p 7301 --cluster check 【IP:PORT】 集群中的任一节点都能得到信息

重新分配槽位

在这里插入图片描述
在这里插入图片描述

分配从节点

redis-cli -a 密码 --cluster add-node ip:新slave端口 ip:新master端口 --cluster-slave --cluster-master-id 新主机节点ID

redis-cli -a 111111 -p 7301 --cluster add-node \
172.17.0.9:7308 \
172.17.0.8:7307 \
--cluster-slave --cluster-master-id 4a849f4b3d5e9e6bbf4412e8c86e7904477f4d4b

在这里插入图片描述

在这里插入图片描述

4.6、缩容(演示)

删除从节点7308

命令:redis-cli -a 密码 --cluster del-node ip:端口 节点ID

redis-cli -a 111111 -p 7301 --cluster del-node 172.17.0.9:7308 14cca2509252d583b06d3fe521eed8661f7efc15

将主节点7307的槽位重新分配给其他主节点

redis-cli -a 111111 --cluster reshard 172.17.0.2:7301

在这里插入图片描述

槽位重新分配,7307也变为从节点

在这里插入图片描述

删除原主节点7307

redis-cli -a 111111 -p 7301 --cluster del-node 172.17.0.8:7307 4a849f4b3d5e9e6bbf4412e8c86e7904477f4d4b

在这里插入图片描述

相关文章:

Redis 主从复制+哨兵+集群

1、总结写在前面 Redis 集群 数据分片 高可用性 Redis 哨兵 主从复制 故障转移 2、主从复制 2.1、准备配置 查看docker 容器 ip docker inspect 容器id | grep IPAddressdocker inspect -f{{.Name}} {{.NetworkSettings.IPAddress}} $(docker ps -aq)修改配置文件 初始…...

cpolar:通过脚本自动更新主机名称和端口号进行内网穿透【免费版】

cpolar 的免费版经常会重新分配 HostName 和 Port,总是手动修改太过麻烦,分享一下自动更新配置文件并进行内网穿透的方法。 文章目录 配置 ssh config编写脚本获取 csrf_token打开登陆界面SafariChrome 设置别名 假设你已经配置好了服务器端的 cpolar。 …...

【Python日志模块全面指南】:记录每一行代码的呼吸,掌握应用程序的脉搏

文章目录 🚀一、了解日志🌈二、日志作用🌈三、了解日志模块⭐四、日志级别💥五、记录日志-基础❤️六、记录日志-处理器handler🎬七、记录日志-格式化记录☔八、记录日志-配置logger👊九、流程梳理 &#x…...

SpringBoot 多种优雅的线程池配置与使用(异步执行函数,反射机制,动态识别参数,有返回值)

想要明白生活你需要先经历它,而不是总在分析它。 —萨莉鲁尼 文章目录 前言一、@Async注解1. 概念2. 使用2.1 使用@EnableAsync启动函数异步支持2.2 不会异步执行的坑2.2.1 为什么内部调用不会异步执行?2.2.2 如何确保@Async方法异步执行?3. 配置线程池3.1 通过代码配置3.1.…...

ansible copy模块--持续创作中

copy模块用于将文件从ansible控制节点(管理主机)或者远程主机复制到远程主机上。其操作类似于scp(secure copy protocol)。 关键参数标红。 参数: src:(source:源) 要复制到远程…...

自学SAP是学习ECC版本还是S4版本?

很多人想学SAP,问我应该学ECC版本还是S4版本,我的建议如果你是自学的话,我个人建议使用ECC版本就行,因为这两个版本前台业务和后台配置的操作差异并不大,主要差异在于数据库的差异,前台业务操作和后台系统配…...

银河麒麟4.0.2安装带有opengl的Qt5.12.9

银河麒麟4.0.2下载地址:银河麒麟-银河麒麟(云桌面系统)-银河麒麟最新版下载v4.0.2-92下载站 VirtualBox:https://www.virtualbox.org/wiki/Downloads qt下载:Index of /archive/qt/5.12/5.12.9 1安装VirtualBox:网上教材比较多 1)安装完后安…...

django学习入门系列之第二点《浏览器能识别的标签3》

文章目录 列表表格往期回顾 列表 无序列表 <!-- <ul </ul> 无序列表 --> <ul><li> 内容1 </li><li> 内容2 </li><li> 内容3 </li><li> 内容4 </li> </ul>有序列表 <!-- <ol> &…...

git常见实用命令,简单上手操作

常用命令&#xff1a; 添加远程账号名称&#xff1a;git config --global user.name ‘’ 添加用户eamil&#xff1a;git config --global user.email ‘’ 初始化厂库&#xff1a;git init 新建文件夹&#xff1a;mkdir 文件夹名 新建文件&#xff1a;touch 文件名 查看…...

2-11 基于matlab的BP-Adaboost的强分类器分类预测

基于matlab的BP-Adaboost的强分类器分类预测&#xff0c;Adaboost是一种迭代分类算法&#xff0c;其在同一训练集采用不同方法训练不同分类器&#xff08;弱分类器&#xff09;&#xff0c;并根据弱分类器的误差分配不同权重&#xff0c;然后将这些弱分类器组合成一个更强的最终…...

Neo4j图形数据库查询,Cypher语言详解

Cypher语言详解 Cypher是一种专为Neo4j图形数据库设计的声明式查询语言。它类似于SQL&#xff0c;但其设计目标是便于表达图数据库中常见的图形结构和操作。本文将详细介绍Cypher语言的基本语法、常见操作、高级功能以及使用Cypher进行图形数据分析的技巧。 1. Cypher的基本概…...

C# Winform Datagridview控件使用和详解

DataGridView 是一种以表格形式显示数据的控件&#xff0c;由Rows(行)&#xff0c;Columns(列)&#xff0c;Cells(单元格)构成。本实例将综合利用DataGridView的属性和事件&#xff0c;展示不同的表格风格数据和操作。包含&#xff1a; 添加Datagridview行&#xff0c;列数据设…...

xshell传输文件速率为0

你们好&#xff0c;我是金金金。 场景 此时我通过xshell客户端上传文件&#xff0c;速率一直为0 解决 安装 yum -y install lrzsz 即可 这个工具主要提供 rz 和 sz 命令&#xff0c;用于通过 Zmodem 协议在本地计算机和远程服务器之间传输文件 编写有误还请大佬指正&#xff0…...

2.spring cloud gateway 源码编译

spring cloud gateway编译 1.编译 命令 mvn clean compile -U2.报错 报错信息 核心信息 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-checkstyle-plugin:3.1.2:check (checkstyle-validation) on project spring-cloud-gateway-mvc: Failed during …...

[Linux] UDP协议介绍:UDP协议格式、端口号在网络协议栈那一层工作...

TCP/IP网络模型, 将网络分为了四层: 之前的文章中以HTTP和HTTPS这两个协议为代表, 简单介绍了应用层协议. 实际上, 无论是HTTP还是HTTPS等应用层协议, 都是在传输层协议的基础上实现的 而传输层协议中最具代表性的就是: UDP和TCP协议了. 以HTTP为例, 在使用HTTP协议通信之前, …...

Spring Boot 中如何解决跨域问题、Spring Cloud 5大组件、微服务的优缺点是什么?

Spring Boot 中如何解决跨域问题 ? SpringMVC项目中使用CrossOrigin注解来解决跨域问题 , 本质是CORS RequestMapping("/hello")CrossOrigin(origins "*")//CrossOrigin(value "http://localhost:8081") //指定具体ip允许跨域public String …...

[Vulnhub] Sleepy JDWP+Tomcat+Reverse+Reverse-enginnering

信息收集 Server IP AddressPorts Opening192.168.8.100TCP:21,8009,9001 $ nmap -sV -sC 192.168.8.100 -p- --min-rate 1000 -Pn Starting Nmap 7.92 ( https://nmap.org ) at 2024-06-20 05:06 EDT Nmap scan report for 192.168.8.100 (192.168.8.100) Host is up (0.00…...

基于MATLAB的误码率与信噪比(附完整代码与分析)

目录 一. 写在前面 二. 如何计算误码率 三. 带噪声的误码率分析 3.1 代码思路 3.2 MATLAB源代码及分析 四. 总结 4.1 输入参数 4.2 规定比特长度 4.3 特殊形式比较 一. 写在前面 &#xff08;1&#xff09;本文章主要讨论如何仿真误码率随着信噪比变化的图像 &#…...

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 字符串筛选排序(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 📎在线评测链接 字符串筛选排序(100分) 🌍 评测功能需要 订阅专栏 后私信…...

# 开发安全

开发安全 文章目录 开发安全安全开发生命周期安全开发目标安全开发基本准则注入类攻击手段Sql注入命令执行命令执行防御文件遍历防御 植入类安全漏洞防御XSS&#xff08;前端漏洞&#xff09;防御 储存型XSS文件上传防御 CSRF防御 会话固定防御 其它类型安全漏洞越权访问防御 口…...

Qt MaintenanceTool.exe使用镜像源更新Qt

环境&#xff1a;Windows11&#xff0c;Qt6.5&#xff0c;新版的MaintenanceTool.exe linux环境类似&#xff0c;mac环境可以看官方文档。 cmd命令窗口&#xff1a;切换到MaintenanceTool.exe所在目录&#xff0c;可以用“D:”切换到D盘&#xff0c;“cd xxxx”切换到xxxx目录…...

Java 8 Stream API介绍

Java 8引入了Stream API&#xff0c;这是对集合框架的一种增强&#xff0c;它允许你以一种声明式的方式处理数据集合。Stream API的核心在于将数据的操作分为两个主要阶段&#xff1a;中间操作和终端操作。中间操作返回的是一个新的Stream&#xff0c;可以链式调用多个中间操作…...

【前端技巧】css篇

利用counter实现计数器 counter-reset&#xff1a;为计数器设置名称&#xff0c;语法如下&#xff1a; counter-rese: <idntifier><integer>第一个参数为变量名称&#xff0c;第二个参数为初始值&#xff0c;默认为0 counter-increment&#xff1a;设置计数器增…...

2024年6月20日 (周四) 叶子游戏新闻

超市播音系统: 定时播放不同音乐 强制卸载软件: 一款强制卸载软件 免费多人沙盒游戏《宝藏世界》推出更新“潮起潮落”&#xff0c;带来全新克苏鲁风冒险准备好迎接一场超凡的冒险吧&#xff0c;MMORPG发行商gamigo宣布《宝藏世界》的最新更新&#xff1a;“潮起潮落”。这次更…...

Zookeeper 一、Zookeeper简介

1.分布式系统定义及面临的问题 分布式系统是同时跨越多给物理主机&#xff0c;独立运行的多个软件所组成的系统。类比一下&#xff0c;分布式系统就是一群人一起干活。人多力量大&#xff0c;每个服务器的算力是有限的&#xff0c;但是通过分布式系统&#xff0c;由n个服务器组…...

普通一本能找到嵌入式linux工作吗?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「嵌入式linux的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;首先&#xff0c;普通…...

Effective C++ 改善程序与设计的55个具体做法笔记与心得 3

三. 资源管理 13. 以对象管理资源 请记住&#xff1a; 为防止资源泄露&#xff0c;使用智能指针 14. 在资源管理类中小心copying行为 请记住&#xff1a; 复制RAII对象必须一并复制他所管理的资源&#xff0c;所以资源的copying行为决定RAII对象的copying行为普遍而常见的…...

苹果的后来者居上策略:靠隐私保护打脸微软

01.苹果与微软相比更注重用户隐私 我一直是Windows的忠实用户&#xff0c;但微软疯狂地将人工智能融入一切&#xff0c;让我开始觉得应该咬咬牙换成Mac。 自小我几乎只用Windows电脑&#xff0c;所以我对MacOS一直不太适应。虽然Windows 11有其缺点&#xff0c;但总的来说&am…...

java经典面试题--进程和线程的关系/区别

进程和线程的定义以及作用 进程:进程是操作系统分配资源的基本单位,是程序的一次执行过程,它包括了程序执行的上下文环境,包括程序代码、数据、系统资源&#xff08;内存、文件、设备等&#xff09;以及执行状态等信息&#xff0c;其作用是提供一个独立的执行环境&#xff0c;…...

Solr 日志系统7.4.0部署和迁移到本地,Core Admin 添加新的core报错

文章目录 Solr部署Docker部署二进制部署 Tips:Solr设置账号密码方法1&#xff1a;(不使用)方法2&#xff1a; Core Admin 添加新的core报错Solr数据迁移 Solr部署 Docker部署 docker run -d -p 8983:8983 --name solr solr:latest docker run -d -p 8983:8983 -v /opt/solr:/…...

物流网站建设费用/关键词优化的作用

【目标检测-网络测试1】RFBNet代码复现及问题解决参考文章&#xff1a; &#xff08;1&#xff09;【目标检测-网络测试1】RFBNet代码复现及问题解决 &#xff08;2&#xff09;https://www.cnblogs.com/fanzhongjie/p/11504691.html &#xff08;3&#xff09;https://www.…...

不写代码门户网站建设/各网站收录

/e/config/config.php转载于:https://www.cnblogs.com/bubuchu/p/10277892.html...

网站策划软件/b站引流推广网站

git merge 冲突解决背景git 现在已经成为我们日常生活中普遍的工具了&#xff0c;其实有时候还是有一些疑问的&#xff0c;毕竟很多东西即使你之前学过了&#xff0c;当你用的时候还是有点不确定&#xff0c;一般我都会在本地做一下测试&#xff0c;避免给生产环境的 git 代码库…...

wordpress 邮件验证码/手机优化大师下载2022

Java Web使用过滤器防止Xss攻击&#xff0c;解决Xss漏洞发布时间&#xff1a;2018-11-11 10:41,浏览次数&#xff1a;286, 标签&#xff1a;JavaWebXssweb.xml添加过滤器xssFiltercom.quickly.exception.common.filter.XssFilterxssFilter*过滤器代码package com.quickly.excep…...

内部建设网站需要什么条件/制作一个简单的网站

从SQL SERVER 2008开始&#xff0c;SQL SERVER 提供了对数据进行压缩的功能&#xff0c;启用数据压缩无须修改应用程序。 数据压缩可有效减少数据的占用空间&#xff0c;读取和写入相同数据花费的IO也响应减少&#xff0c;从而可以有效缓解IO压力&#xff0c;但由于数据在读取和…...

像芥末堆做内容的网站/百度推广优化中心

在上一篇中&#xff0c;我们讲到了如何配置多个容器并且定制属于自己的镜像&#xff0c;但是容器的数据性能以及持久如何保证的&#xff1f;本篇将通过介绍Docker Volume来说明这个问题&#xff0c;涉及到的架构如下图所示&#xff1a;1、 说到Volume实际上有多种方式可以实现&…...