redis的数据类型的操作增删改查

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文件创建完成为止。

bgsave就是主从复制的机制

bgsave的特点就是父进程会通过fork机制创建一个子进程,子进程的创建过程中,父进程会阻塞,子进程创建完毕,主进程会解除阻塞,然后由子进程来创建RDB文件。创建完成之后,通知主进程更新通知信息。

save 900 1

900秒 当时间到900秒时,如果redis的数据至少发生一次变化,就会执行bgsave,

save 300 10

300 秒 时间到300秒时,如果redis的数据至少发生10次变化,就会执行bgsave,

save 60 10000

60秒 时间到60秒时,如果redis的数据至少发生一万次变化,就会执行bgsave,

sava 120 1000 bgsave

save 60 10000 bgsave

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

rdbcompression yes

开启rdb的文件压缩功能,在高并发场景建议关闭。

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

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

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

启动时加载:

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

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

AOF持久化:

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

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

aof-load-truncated yes

用于判断AOF文件,如果被截断时的行为

yes:发现在被截断(写入过程中出现了异常,导致文件未能完全写入) redis会尽可能恢复文件中的数据,redis会继续运行

no:发现AOF文件被截断,redis将拒绝启动。

数据完整性要求比较高用no

注重数据服务器的可用性用yes

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

AOF的重写功能

1、随着时间增长,AOF文件当中的数据也会不断增加,AOF的文件也会也来越大,过大的AOF文件不仅仅会影响,也会导致数据恢复的时间过长。

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

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

AOF同步文件的策略的三种方式

appendfsync always

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

appendfsync everysec:命令写入,调用write操作,write操作结束后,线程会返回。FSYNC同步文件操作由专门的线程,每秒调用一次,这是一个这种的策略,是性能喝安全性的平衡,是redis的默认配置,也是推荐配置

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

重写的出发条件是什么

1、手动触发

redis-cli bgrewriteaof

2、自动触发

auto-aof-rewrite-percentage 100

文件的大小超过基准的百分比,默认值就是100,文件的超过两倍时,执行bgrewriteaof,设置为0,禁用自动触发

100M 200M 200M 400M

auto-aof-rewrite-min-size 64mb

文件大于基准值,才会进行重写,整个值时AOF文件执行重写的最小值,避免开始穷redis后,文件太小,然后频繁的进行重写。

AOF为什么能够压缩文件;

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

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

多条命令合并成一个 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主进程的性能也会有一定影响。

重点:

持久化方式:redis的持久化也算是高可用的一种,通过备份文件来恢复数据,冷备份。

rdb :sava线上禁用,bgsave

AOF:实时持久化写入的是操作的命令,除了查 set del 会记录 get select不计入

实时记录恢复方式类似于mysql的binlog

重写;推荐但不是必须的,重写也是主进程创建一个子进程,在过程中产生的数据以及同步策略都会写入到AOF当中。

实验:重复写入数据

重复插入同一个数据只会写入最后一个设置的数据

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Oracle 11g安装过程

文章目录 前言1.下载安装包2.安装2.1本地安装文件2.2 安装过程 3.查看是否安装成功3.1 查看oracle是否安装成功3.2 查看oracle服务 前言 本文仅用于记录亲自安装oracle的过程 1.下载安装包 官网地址: Oracle Database 11g Release 2 (11.2.0.1.0) 注意&#xff…

数据治理框架和成熟度模型

数据治理成熟度模型 一个企业的数据治理能力越高,所享受到数据治理带来的价值也会越多,如增加收入、减少成本、降低风险等。于是,很多企业想要准确地评估本公司的数据治理能力,可以利用数据治理成熟度模型方法,包括 D…

Javaweb之Vue组件库Element案例的详细解析

4.4 案例 4.4.1 案例需求 参考 资料/页面原型/tlias智能学习辅助系统/首页.html 文件,浏览器打开,点击页面中的左侧栏的员工管理,如下所示: 需求说明: 制作类似格式的页面 即上面是标题,左侧栏是导航&…

泛微OA对接金蝶云星空方案分享(对接场景解析)

分享金蝶云星空跟泛微OA系统集成对接的方案分享,主讲审批流程对接,表单对接的两类场景。分别是金蝶云星空发起申请和泛微发起流程审批,最终实现统一管理。 数据集成主要有以下好处: (1)数据一致性&#xf…

吉利展厅 | 透明OLED拼接2x2:科技与艺术的完美融合

产品:4块55寸OLED透明拼接屏 项目地点:南宁 项目时间:2023年11月 应用场景:吉利展厅 在2023年11月的南宁,吉利展厅以其独特的展示设计吸引了众多参观者的目光。其中最引人注目的亮点是展厅中央一个由四块55寸OLED透…

函数的极值与最值

函数的最值 1.闭区间上连续函数的最值 1.求驻点或不可导点(可能的极值点) 2.求函数在驻点,不可导点,端点的函数值 3.比较大小 例题: 例题思想:分段函数分段点必须验证导数的存在性 几种常见的最值类型 1.…

WordPress自动采集伪原创发布工具

在当今数字化时代,随着信息爆炸式增长,网站内容的更新速度飞快。对于拥有WordPress网站的用户而言,如何轻松而又快速地批量采集伪原创内容成为一项具有挑战性的任务。本文将专心分享一些方法和技巧,帮助WordPress用户实现批量采集…

软件设计模式原则(三)单一职责原则

单一职责原则(SRP)又称单一功能原则。它规定一个类应该只有一个发生变化的原因。所谓职责是指类变化的原因。如果一个类有多于一个的动机被改变,那么这个类就具有多于一个的职责。而单一职责原则就是指一个类或者模块应该有且只有一个改变的原…

王道p150 14.假设二叉树采用二叉链表存储结构,设计一个算法,求非空二叉树 b的宽度(即具有结点数最多的那一层的结点个数) (c语言代码实现)

采用层次遍历的方法求出所有结点的层次,并将所有结点和对应的层次放在一个队列中。然后通过扫描队列求出各层的结点总数,最大的层结点总数即为二叉树的宽度。 /* A B C D E F …

生成式AI与预测式AI的主要区别与实际应用

近年来,预测式人工智能(Predictive AI)通过先进的推荐算法、风险评估模型、以及欺诈检测工具,一直在推高着该领域公司的投资回报率。然而,今年初突然杀出的生成式人工智能(Generative AI)突然成…

VMware如何导出和导入镜像OVF虚拟机(以unbuntu为例)

前言:我下载了一个unbuntu的系统镜像,基于这个镜像创建了一个unbuntu的虚拟机,辛辛苦苦配置需要的开发环境,如:安装了mysql,安装了jdk等,此时,我的同事可能需要也是同一套类似环境&a…

MySQL 中的锁(二)

8.4. 意向锁 但是在上面的例子这里头有两个问题: 如果我们想对大楼整体上 S 锁,首先需要确保大楼中的没有正在维修的楼层,如果有正在维修的楼层,需要等到维修结束才可以对大楼整体上 S 锁。 如果我们想对大楼整体上 X 锁&#xf…

现代C++之万能引用、完美转发、引用折叠

现代C之万能引用、完美转发、引用折叠 0.导语1.问题引入2.引入万能引用3.万能引用出现场合4.理解左值与右值4.1 精简版4.2 完整版4.3 生命周期延长4.4 生命周期延长应用5.区分万能引用6.表达式的左右值性与类型无关7.引用折叠和完美转发7.1 引用折叠之本质细节7.2 示例与使用7.…

linux 讨论题合集(个人复习)

常规文件的权限是什么?如何分配或修改这些权限?文件夹(目录)的权限是什么?显示常规文件和文件夹的区别 讨论:①常规的文件权限有四种,r可读、w可写、x可执行、-没有权限;②可以使用c…

鸿蒙4.0开发笔记之ArkTS装饰器语法基础@Extend扩展组件样式与stateStyles多态样式(十一)

一、Extend扩展组件样式 1、作用 前文提到可以使用Styles用于样式的扩展,在Styles的基础上,ArkTS语法还提供了Extend,⽤于扩展原生组件样式,包括Text、Button等等。 2、定义语法 Extend(UIComponentName) function functionNam…

错误 LNK2001 无法解析的外部符号 __imp__CrtDbgReport

”属性“ -->”设置“ --> ”c“ – > ”代码生成“ --> ”运行库“ ,将 ”多线程(MT)“ 改为 ”多线程(MTD)“。

C语言——从终端(键盘)读入 20 个数据到数组中,统计其中正数的个数,并计算这些正数之和

#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h> int main() {int i0;int sum0;int count0;int arr[20];printf("输入20个数据&#xff1a;\n");for(i1;i<20;i){scanf("%d",&arr[i]);if(arr[i]>0){count;sumarr[i];}}printf("正…

IELTS学习笔记_grammar_新东方

参考&#xff1a; 新东方 田静 语法 目录&#xff1a; 导学简单句… x.1 导学 学语法以应用为主。 基础为&#xff1a;单词&#xff0c;语法 进阶为&#xff1a;听说读写译&#xff0c;只考听说读写。 words -> chunks -> sentences, chunks&#xff08;语块的重要…

计算机基础知识61

JsonResponse 功能例子 你自己写一个类&#xff0c;实现JsonResponse 功能&#xff0c;不需要传safeFalse&#xff0c;无论字典或列表&#xff0c;都能完成序列化返回给前端 1 响应头例子 四种情况&#xff0c;在响应头返回数据 xxxx # 第一种情况 JsonResponse def show(req…