Redis哨兵(sentinel)
什么是Redis哨兵监控后台的预警者负责持续检查主服务器(master主机)的运行状态。一旦发现主服务器出现故障,系统将启动一个自动化的切换机制。这个机制会根据预设的投票规则,从多个备用服务器(从库)中选择一个来接替主服务器的角色。被选中的备用服务器将升级为新的主服务器,并继续无缝地对外提供服务,确保整个系统的持续稳定运行。这种机制有效避免了单点故障带来的风险,并提升了系统的整体可靠性和容错能力。
Redis哨兵作用
主从状态监测:监控主从redis库运行是否正常
哨兵系统负责不断检测Redis主服务器及其从服务器的运行状态,确保它们都正常运行。
通过实时的心跳检测和状态检查,哨兵能够迅速发现任何主从节点的问题。
消息通知:哨兵可以将故障转移的结果发送给客户端
在发生主服务器故障转移等重要事件时,哨兵有能力向连接的客户端发送通知。
客户端可以接收到这些事件通知,并据此更新其连接配置或执行其他必要的操作。
自动故障恢复:如果master异常,则会进行主从切换,将其中一个slave作为新master
一旦检测到主服务器出现异常,哨兵系统会立即启动故障恢复流程。
这个过程 ...
Redis主从复制原理及配置
Redis主从复制介绍Redis的持久化功能在一定程度上保证了数据的安全性,即便是服务器宕机的情况下,也可以保证数据的丢失非常少。通常,为了避免服务的单点故障,会把数据复制到多个副本放在不同的服务器上,且这些拥有数据副本的服务器可以用于处理客户端的读请求,扩展整体的性能。
主从复制的好处:
数据冗余,实现数据的热备份
故障恢复,避免单点故障带来的服务不可用
读写分离,负载均衡。主节点负载读写,从节点负责读,提高服务器并发量
高可用基础,是哨兵机制和集群实现的基础
主从复制,master以写为主,slave以读为主,当master数据变化的时候,自动将新的数据异步同步到其他的slave数据库
主从复制配置准备三台虚拟机,构成一主二仆的结构
修改配置文件redis6379.conf为例,步骤如下:
开启daemonize yes12# 设置为后台运行daemonize yes
注释掉bind 127.0.0.1
protected-mode no
指定端口
指定当前工作目录,dir
pid文件名字,pidfile
log文件名字,logfile
requiredpass,密码
dum ...
Redis持久化:AOF介绍及优劣
AOF介绍AOF持久化会把被执行的写命令写到AOF文件的末尾,记录数据的变化。默认情况下,Redis是没有开启AOF持久化的,开启后,每执行一条更改Redis数据的命令,都会把该命令追加到AOF文件中,这是会降低Redis的性能,但大部分情况下这个影响是能够接受的,另外使用较快的硬盘可以提高AOF的性能
默认情况下,redis是没有开启AOF的。开启AOF功能需要设置配置:appendonly yes
AOF持久化工作流程
Client作为命令的来源,会有多个源头以及源源不断的请求命令。
在这些命令到达Redis Server 以后并不是直接写入AOF文件,会将其这些命令先放入AOF缓存中进行保存。这里的AOF缓冲区实际上是内存中的一片区域,存在的目的是当这些命令达到一定量以后再写入磁盘,避免频繁的磁盘IO操作。
AOF缓冲会根据AOF缓冲区同步文件的三种写回策略将命令写入磁盘上的AOF文件。
随着写入AOF内容的增加为避免文件膨胀,会根据规则进行命令的合并(又称AOF重写),从而起到AOF文件压缩的目的。
当Redis Server服务器重启的时候会队AOF文件载入数据。
...
Redis持久化:RDB介绍及优劣
Redis数据持久化Redis作为一个内存数据库,数据是以内存为载体存储的,那么一旦Redis服务器进程退出,服务器中的数据也会消失。为了解决这个问题,Redis提供了持久化机制,也就是把内存中的数据保存到磁盘当中,避免数据意外丢失Redis提供了两种持久化方案:RDB持久化和AOF持久化,一个是快照的方式,一个是类似日志追加的方式
RDB(Redis Database) ,将某一时刻的所有数据保存到一个 RDB 文件中。
AOF(append-only-file) ,当Redis服务器执行写命令的时候,将执行的写命令保存到 AOF 文件中。
RDB(Redis DataBase)快照持久化在指定的时间间隔,执行数据集的时间点快照
实现类似照片记录效果的方式,就是把某一时刻的数据和状态以文件的形式写到磁盘上,也就是快照。这样一来即使故障宕机,快照文件也不会丢失,数据的可靠性也就得到了保证。
这个快照文件就称为RDB文件(dump.rdb)其中,RDB就是Redis DataBase的缩写,该文件是一个压缩过的二进制文件,可以通过该文件还原快照时的数据库状态。RDB文件默认为当前工作 ...
Mysql事务概念笔记
前言在 MySQL 中,事务(Transaction)是一组可以作为单一工作单元执行的 SQL 操作。事务提供了确保数据一致性的重要机制,可以保证多个 SQL 语句要么全部成功执行,要么在出错时不执行任何操作(即 “全部执行或全部回滚” 的原则)。事务通常用于执行需要高一致性的数据操作场景,例如银行转账等涉及多表更新的操作。
事务的四大特性(ACID原则)
原子性(Atomicity):
事务中的所有操作必须全部完成或完全不执行。即使系统发生故障,事务也必须保证要么完全执行,要么完全回滚,不会出现部分执行的情况。
一致性(Consistency):
事务执行前后,数据库必须保持一致的状态。如果事务成功执行,它必须将数据库从一个一致状态转换为另一个一致状态。如果出现错误,事务应回滚到最初的状态,保持数据库一致性。
隔离性:
多个事务可以并发执行,但每个事务的操作和数据的变更应该对其他事务是隔离的,即一个事务在执行过程中不可见其他事务的中间状态。事务隔离有不同的级别(例如:READ UNCOMMITTED,READ COMMITTED,REPEATABLE READ, ...
LeetCode每日一题(24-10)
134. 加油站date: 2024-10-21 tag:贪心算法
题解:定义了两个变量:totalgas和totalcost,表示总获得的油量和消耗的油量,初始为0如果totalgas小于totalcost则表示不能跑一圈,返回-1;
用currentgas表示当前的油量,startindex表示开始的加油站下标。
遍历两个数组,记录获得油量和消耗的油量,currentgas+=gas[i]-cost[i]表示当前的油量如果currentgas<0说明从 startindex 到当前加油站无法到达下一个加油站,因此将 startindex 更新为当前加油站的下一个索引,并重置 currentgas 为 0。
返回结果,如果满足totalgas<totalcost,则返回startindex的值,否则返回-1;
代码12345678910111213141516171819class Solution {public: int canCompleteCircuit(vector<int>& gas, vector<int>&a ...
Curl用法指南
简介curl 是常用的命令行工具,用来请求 Web 服务器。它的名字就是客户端(client)的 URL 工具的意思。
它的功能非常强大,命令行参数多达几十种。
curl的基本用法发送 GET 请求最简单的用法是向指定的 URL 发送 GET 请求,并在控制台输出返回的内容。
1curl https://www.example.com
运行上述命令后,curl 会输出 https://www.example.com 的 HTML 页面内容。默认情况下,curl 发送一个 HTTP GET 请求,并输出服务器的响应结果到终端。
123456789101112<!doctype html><html><head> <title>Example Domain</title></head><body> <div> <h1>Example Domain</h1> <p>This domain is for use in ill ...
常用 Git 命令清单
一般来说,日常使用只要记住下图6个命令,就可以了。但是熟练使用,恐怕要记住60~100个命令。
新建代码库12345678# 在当前目录新建一个Git代码库$ git init# 新建一个目录,将其初始化为Git代码库$ git init [project-name]# 下载一个项目和它的整个代码历史$ git clone [url]
配置Git的设置文件为.gitconfig,它可以在用户主目录下(全局配置),也可以在项目目录下(项目配置)。
123456789# 显示当前的Git配置$ git config --list# 编辑Git配置文件$ git config -e [--global]# 设置提交代码时的用户信息$ git config [--global] user.name "[name]"$ git config [--global] user.email "[email address]"
增加/删除文件123456789101112131415161718192021# 添加指定文件到暂存区$ git add [f ...
Hexo博客与主题配置文件备份与恢复
前言hexo d上传部署到github的其实是hexo编译后的文件,是用来生成网页的,不包含源文件,也不包含主题配置文件。也就是上传的是在本地目录里自动生成的.deploy_git里面。
其他文件 ,包括我们写在source 里面的文章,和配置文件,主题文件,都没有上传到github。本篇文章就是为解决hexo备份无法包含主题配置文件的问题
备份博客创建新的仓库重新创建一个仓库来专门存放所有的配置文件创建一个仓库,勾选README
获取.git文件夹原始的博客文件夹只有.deploy_git,是没有.git文件夹的,于是我们先去桌面或者哪里随便一个地方,把刚刚的hexo分支给clone下来。然后剪切出里面的.git文件夹,复制到现在的博客文件夹中。
1git clone https://github.com/dida303/hexo-backup.git
需要把主题文件中的.git文件删掉,因为git不能嵌套上传。
备份到远程仓库通过如下命令将本地文件备份到远程仓库
123git add .git commit -m "backup"git push
经常备份12 ...
Cloudflare 15年SSL证书及宝塔面板配置SSL证书
前言搭建网站的SSL证书一般都是使用Let's Encrypt的免费证书,需要每3个月续期,比较麻烦。如果网站使用了Cloudflare的代理(即开启小云朵)则推荐使用Cloudflare的15年证书。
申请15年SSL证书CF后台->SSL->源服务器->创建证书
保存好私钥的数据,此页面后无法再次查看!
宝塔面板配置证书宝塔后台——找到对应的网站——点击设置——SSL地方选择“其他证书”,复制对应的密钥进来就可以了。
按照下图的格式放,Private Key和BEGIN CERTIFICATE分别放对应位置。
Cloudflare SSL配置CF的默认配置为灵活,需要配置为完全或完全(严格),如果不重新配置,你将会得到一个重定向次数过多的打不开网站。
总结优点是15年,不需要自己为证书牵挂,缺点就是要依赖小云朵的CDN。