redis的数据类型的增删改查

redis的高可用

在集群中有一个非常重要的指标,提供服务的时间的百分比(365天)99.9%

redis的高可用含义更加宽泛,正常服务是指标之一,数据容量的扩展,数据的安全性

在redis中实现高可用技术

持久化,主从,哨兵模式,cluster集群

持久化

持久化是最简单的高可用方法,主要作用是数据备份,也就是把redis缓存在内存当中的数据保存到本地的硬盘中(冷备份)

redis持久化的两种方式

1、RDB持久化:redis的内存中的数据定时保存到磁盘(自动执行,手动执行)

2、AOF持久化:redis的操作日志,已追加的方式写入一个AOF的文件,类似于mysql的binlog

RDB的持久化

指在指定的时间间隔内,将内存中当前进程中的数据生成快照保存到硬盘(快照持久化),用二进制压缩存储

保存的问加你的后缀.rdb ,redis启动时,可以直接读取快照文件,实现数据恢复

rdb的触发机制

手动机制:save bgsave都可以生成RDB文件

save创建RDB文件时,整个redis进程会被阻塞,期间redis将无法进行读写操作,直到RDB文件创建完成为止

save的数据流程图

在redis数据库中创建几个列表
 set test1 1 
 set test2 2
 set test3 3
save

进入备份文件目录
cd /var/lib/redis/6379
cp dump.rdb /opt

清空数据库
停服务
/etc/init.d/redis_6379 stop


把复制到opt目录下的dump.rdb复制到etc/init.conf/6379目录下

开启服务
/etc/init.d/redis_6379 start
刚刚创建数据库的文件,也恢复了

bgsave的数据流程

bgsave就是主从复制的机制

bgsave工作流程

主进程会通过fork机制创建一个子进程,子进程的创建过程中,主进程会阻塞,子进程创建完毕,主进程解除阻塞

子进程来创建RDB文件,创建完成之后,通知主进程更新通知信息

自动存储机制
vim /etc/redis/6379.conf
219行
save 900 1
900秒	当时间到900秒时,redis的数据至少发生了1次变化,就执行bgsave

save 300 10
300秒	当时间到300秒时,redis的数据至少发生了10次变化,就执行bgsave

save 60 10000
60秒	当时间到60秒时,redis的数据至少发生了10000次变化,就执行bgsave

数据变动越多,执行的时间要越短,数据变动不大,时间间隔

242行
rdbcompression yes
开启RDB的文件压缩功能,在高并发场景建议关闭

264行
dir /var/lib/redis/6379 
保存持久化文件目录

除了配置文件中的save m n之外

主从复制,从节点执行全量复制操作,直接点会执行bgsave,把rdb文件传送给从节点

关闭主进程,shutdown之后,会自动执行rdb的持久化

启动时加载

rdb文件被损坏,日志中会打印错误,redis会拒绝启动

redis-check-rdb 修复rdb的持久化文件

AOF持久化

AOF持久化是将redis的每一次读 写 删除命令纪录到一个单独的.aof为结尾的文件,查询操作由主进程纪录,当redis重启时,再次执行aof文件中的命令来恢复数据

AOF的实时性更好,也是主流的持久化方案

vim /etc/redis/6379.conf
700行
appendonly yes 
yes是开启持久化功能

appendfilename "appendonly.aof"

aof-load-truncated yes
用于判断AOF文件,如果被截断时的行为
yes:发现被截断(写入过程中出现异常,导致文件未能完全写入),redis会尽可能的恢复文件中的数据,redis会继续运行
no:发现AOF文件被截断,redis将拒绝启动
如果你对数据完整性的要求高 no
	   注重数据服务器的可用性 yes
aof备份和恢复
进入数据库并创建
set test1 1
set test2 2
set test3 3

删除库内容

关闭服务
/etc/init.d/redis_6379  stop

进入日志文件
vim /var/lib/redis/appendonly.aof

flushall上面*以下全部删除

在开启服务
/etc/init.conf/6379 start 
刚刚删除的文件,就会恢复

rdb是redis的默认持久化文件,但是一旦开启AOF持久化,那么redis会以AOF的持久化文件作为最高优先级

AOF的重写功能
为什么要重写?

随着时间增长,AOF文件当中的数据也会不断增加,AOF的文件也会越来越大,过大的AOF文件不仅仅会影响服务器的正常运行,也会导致导致数据恢复的时间过长

什么叫重写?

文件重写是指定期的重写AOF文件,减少AOF文件的体积,AOF重写是吧redis进程内的数据,转化为写命令,同步到新的AOF文件当中(不会额外的生成一个新的文件,只是在原内容中进行压缩),不会对原有的AOF文件进行任何读、写的操作

特殊注意:文件重写虽然是AOF持久化强烈推荐的,但不是必须的,没有重写,并影响redis启动时读取数据,在实际中,会关闭自动的文件重写,通过定时任务来完成

AOF同步文件策略的三种方式
vim /etc/redis/6379.conf
729行

#appendfsync always
appendfsync everysec
#appendfsync no

appendfsync always  写入过程中,立刻调用redis系统的fsync操作写入到AOF文件,这次写入都执行同步,硬盘的性能有瓶颈,硬盘的寿命也会大大降低

appendfsync no	写入操作调用系统的write操作,不对AOF文件进行同步,操作系统来同步,同步周期30秒,文件同步的时间不可控,缓冲区堆积大量数据,数据的安全也无法保证

appendfsync everysec	命令写入,调用write操作,write操作结束后,线程会返回,FSYNC同步文件操作由专门的线程,每秒调用一次,这一个折中的策略,是性能和安全性的平衡,是redis的默认配置,也是推荐配置
重写的触发条件是什么?

1、手动触发

redis-cli bgrewriteaof 执行重写的命令

查看日志文件

手动触发的数据流程

对原有的数据,只是保留纪录 没有其他的操作

2、自动触发

vim /etc/redis/6379.conf
771行和772行
auto-aof-rewrite-percentage 100
文件的大小查过基准的百分比,默认值就是100,文件的超过两倍时,执行bgrewriteaof 设置为0 禁用自动触发

auto-aof-rewrite-min-size 64mb
文件大于基准值,才会进行重写,这个值是AOF文件执行重写的最小值,避免开启启动redis后,文件太小,然后频繁的进行重写
AOF重写为什么能够压缩文件

1、重写的过程中,过期的数据不会写入文件

2、无效的命令不在写入文件,数据被重复设置 例如 set test=1 set test=2 ,删除的语句也不会写入 set test 1 del test

3、会把多条命令合并成一个,sadd test1 v1 sadd test1 v2 sadd test1 v3 sadd test1 v1 v2 v3

重写之后,AOF的文件当中的命令减少了,空间也少了,恢复速度也增加了(重写不是必须的,要根据需求而定,影响恢复数据快慢)

RDB和AOF之间的优缺点

RDB的优点 文件体积小,网络传输速度很快,适合全量复制,恢复速度也比AOF要快

缺点 做不到实时持久化,数据如此重要,不能够容忍丢失的,另外RDB需要满足特定的格式,兼容性很差,比如老版本的RDB不支持新版本(redis的版本一定要一致)5.0.7

AOF的优点 秒级持久化,兼容性好(文本格式保存的命令)

缺点 文件大,恢复速度慢,AOF持久化需要频繁的向磁盘写数据,磁盘的IO压力也很大,对redis主进程的性能也会有一定的影响

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/174329.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Flink】Process Function

目录 1、ProcessFunction解析 1.1 抽象方法.processElement() 1.2 非抽象方法.onTimer() 2、Flink中8个不同的处理函数 2.1 ProcessFunction 2.2 KeyedProcessFunction 2.3 ProcessWindowFunction 2.4 ProcessAllWindowFunction 2.5 CoProcessFunction 2.6 ProcessJo…

CentOS7安装Docker遇到的问题笔记

笔记/朱季谦 以下是笔者本人学习搭建docker过程当中记录的一些实践笔记,过程当中也遇到了一些坑,但都解决了,就此记录,留作以后再次搭建时可以直接参考。 一、首先,先检查CentOS版本,保证在CentOS7版本以…

智能座舱架构与芯片 - (3) 硬件篇 上

一、介绍 在了解智能座舱的基本架构之后,我们有必要针对智能座舱域的硬件平台,软件平台,SOC等进行逐一介绍。从它们的整体结构中去认识最新的智能座舱组成部件,以及主要功能等。 如上图,是中央计算-区域控制架构下的智…

《白帽子讲web安全》

第十四章 PHP安全 文件包含漏洞是“代码注入”的一种。“代码注入”这种攻击,其原理就是注入一段用户能控制的脚本或代码,并让服务器端执行。“代码注入”的典型代表就是文件包含(File Inclusion)。文件包含可能会出现在JSP、PHP…

基于霍克斯过程的限价订单簿模型下的深度强化学习做市策略

数量技术宅团队在CSDN学院推出了量化投资系列课程 欢迎有兴趣系统学习量化投资的同学,点击下方链接报名: 量化投资速成营(入门课程) Python股票量化投资 Python期货量化投资 Python数字货币量化投资 C语言CTP期货交易系统开…

import.meta.glob() 如何导入多个目录下的资源

import.meta.glob() 如何导入多个目录下的资源 刚开始用 vite,在做动态路由的时候遇到了这个问题,看到其它教程上都是只引用了一个目录层级的内容,比如这样: let RouterModules import.meta.glob("/src/view/*/*.vue"…

网络运维与网络安全 学习笔记2023.11.21

网络运维与网络安全 学习笔记 第二十二天 今日目标 端口隔离原理与配置、路由原理和配置、配置多路由器静态路由 配置默认路由、VLAN间通信之路由器 端口隔离原理与配置 端口隔离概述 实现报文之间的2层隔离,除了使用VLAN技术以后,还可以使用端口隔…

蓝桥杯每日一题2023.11.21

题目描述 “蓝桥杯”练习系统 (lanqiao.cn) 题目分析 思路&#xff1a; 1.去重排序将其进行预处理 2.用gcd得到最简比值 3.用gcd_sub分别计算分子、分母的指数最大公约数 #include<bits/stdc.h> using namespace std; const int N 110; typedef long long ll; ll…

图Graph的存储、图的广度优先搜索和深度优先搜索(待更新)

目录 一、图的两种存储方式 1.邻接矩阵 2.邻接表 生活中处处有图Graph的影子&#xff0c;例如交通图&#xff0c;地图&#xff0c;电路图等&#xff0c;形象的表示点与点之间的联系。 首先简单介绍一下图的概念和类型&#xff1a; 图的的定义&#xff1a;图是由一组顶点和一…

11.21序列检测,状态机比较与代码,按键消抖原理

序列检测 用一个atemp存储之前的所有状态&#xff0c;即之前出现的七位 含无关项检测 要检测011XXX110 对于暂时变量的高位&#xff0c;位数越高就是越早出现的数字&#xff0c;因为新的数字存储在TEMP的最低位 不重叠序列检测 &#xff0c;一组一组 011100 timescale 1ns…

合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(三)

基于ARM语音识别的智能家居系统 我们上一篇&#xff0c;我们实现在Linux系统下编译程序&#xff0c;我们首先通过两个小练习来熟悉一下如何去编译。今天&#xff0c;我们来介绍一下LCD屏幕基本使用。 一、LCD屏幕基本使用 如何使用LCD屏幕&#xff1f; 1、打开开发板LCD设…

JSP编写自己的第一个WebServlet实现客户端与服务端交互

我们在项目中找到java目录 下面有一个包路径 然后 我们在下面创建一个类 我这里叫 TransmissionTest 当然 名字是顺便取的 参考代码如下 package com.example.dom;import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet…

【精选】OpenCV多视角摄像头融合的目标检测系统:全面部署指南&源代码

1.研究背景与意义 随着计算机视觉和图像处理技术的快速发展&#xff0c;人们对于多摄像头拼接行人检测系统的需求日益增加。这种系统可以利用多个摄像头的视角&#xff0c;实时监测和跟踪行人的活动&#xff0c;为公共安全、交通管理、视频监控等领域提供重要的支持和帮助。 …

宏集新闻 | 虹科传感器事业部正式更名为宏集科技

致一直支持“虹科传感器”的朋友们&#xff1a; 为进一步整合资源&#xff0c;给您带来更全面、更优质的服务&#xff0c;我们非常荣幸地宣布&#xff0c;虹科传感器事业部已正式更名为宏集科技。这一重要的改变代表了虹科持续发展进程中的新里程碑&#xff0c;也体现了我们在传…

【brpc学习实践四】异步请求案例详解

注意 使用的还是源码的案例&#xff0c;添加个人注解。在前面的篇章我们讲解了客户端、服务端rpc构造的基本流程及同步、异步的案例基础之后&#xff0c;再理解此案例就容易了。 想直接看案例实现请看&#xff1a; server端实现 client端实现 服务端要点概览 controller ser…

同为科技(TOWE)智能机柜PDU助力上海华为数据中心完善机房末端配电

智能时代加速而来&#xff0c;最大的需求是算力&#xff0c;最关键的基础设施是数据中心。作为一家在信息通信领域拥有多年经验和技术积累的公司&#xff0c;华为在全国多个地区都设有数据中心&#xff0c;如知名的贵州贵安华为云全球总部、内蒙古乌兰察布华为数据中心等&#…

git -1

1.创建第一个仓库并配置local用户信息 git config git config --global 对当前用户所有仓库有效 git config --system 对系统所有登录的用户有效 git config --local 只对某个仓库有效 git config --list 显示配置 git config --list --global 所有仓库 git config --list…

机器视觉兄弟们,新工作之前,不要过度准备

大家对工作的渴望我感同身受&#xff0c;有人去机器视觉培训机构培训&#xff0c;有人默默无闻地努力学习&#xff0c;不都是为了一份高新好工作吗&#xff1f; 实际上是&#xff1a; 技术高的人&#xff0c;劳动力贬值。 技术低的人&#xff0c;没有生存空间。 你有野心&…

HarmonyOS从基础到实战-高性能华为在线答题元服务

最近看到美团、新浪、去哪儿多家互联网企业启动鸿蒙原生应用开发&#xff0c;这个HarmonyOS NEXT越来越引人关注。奈何当前不面向个人开发者开放&#xff0c;但是我们可以尝试下鸿蒙新的应用形态——元服务的开发。 元服务是基于HarmonyOS提供的一种面向未来的服务提供方式&…

『亚马逊云科技产品测评』活动征文|搭建Squoosh图片在线压缩工具

搭建Squoosh图片在线压缩工具 前言一、Squoosh是什么&#xff1f;二、准备一台Lightsail实例1.进入控制台2.创建实例3.开放端口4.部署Squoosh5.预览 三、搭建反向代理1. 安装宝塔2. 配置反向代理3. 预览代理效果 提示&#xff1a;授权声明&#xff1a;本篇文章授权活动官方亚马…