Redis数据持久化的两种方式

news2024/11/25 11:35:08

说明:Redis数据是存储在内存中的,Redis服务被关闭,数据是会被清除的。但Redis有数据持久化机制,在默认情况下,停止Redis服务会触发数据持久化机制,将数据保存下来,在下次启动时再读取出来。

Redis中有以下两种数据持久化方式:

RBD

RBD(数据备份文件,Redis Database Backup file),也叫做数据快照,其实就是将所有数据生成为一个快照文件,保存到磁盘中。快照文件为.rdb文件,默认保存在当前运行目录下;

以下四种情况会执行RBD持久化:

  • save命令

  • bgsave命令

  • redis停机时

  • 触发RDB条件时

(1)执行save命令

save命令是主进程执行的,执行该命令会导致其他指令被阻塞;

在这里插入图片描述

在这里插入图片描述

(在当前目录下生成.rdb快照文件)
在这里插入图片描述

(2)执行bgsave命令

bgsave命令是异步执行的,执行该命令,不会影响到其他进程;

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

bgsave命令为了保证数据一致性,是在内存里把数据额外拷贝了一份,一份用来生成快照文件,一份用来提供给Redis读写;

在这里插入图片描述

(3)redis停机时

ctrl+c停止redis服务;

在这里插入图片描述

(4)触发RDB条件时;

打开redis.conf文件,有关于触发RBD条件的配置;

  • save 3600 1 :表示每3600秒,有1个key发生变化时,触发RDB;

  • save “” :表示不起作用;

另外,还有其他配置:

  • rdbcompression yes:是否开启压缩,建议不开启,开启后会消耗CPU,但磁盘很廉价,没有必要节省;

  • dbfilename dump.rdb:设置RDB文件名称;

  • dir ./:设置RDB文件保存的路径目录;

在这里插入图片描述

AOF

AOP(Append Only File),追加文件,是把Redis处理的每一个写命令都记录下来,生成AOF文件;

AOP默认是不开启的,在redis.conf文件中,关于AOP的配置有以下几项:

  • appendonly no/yes :是否开启AOP,默认是no:

  • appendfilename “appendonly.aof”:设置appendfile文件的名称;

  • appendfsync always/everysec/no:AOF记录的频率,分别是每次/每秒/操作系统控制

  • auto-aof-rewrite-percentage 100:当AOF文件较上次增长超过100%触发AOF;

  • auto-aof-rewrite-min-size 64mb:设置AOF文件体积最小多大以上触发重写;

使用AOF,先把RBD方式关闭掉;

打开这行配置,关闭RBD

在这里插入图片描述

打开appendonly

在这里插入图片描述

appendonly.aof文件的内容

在这里插入图片描述

appendonly.aof是在redis服务开启后生成的,如果没有生成该文件,需要检查redis.conf文件中的配置是否开启;如果开启后重启redis服务还是没有生成aof文件,可以在开启服务后,执行下面的命令;

redis-cli config set appendonly yes

在这里插入图片描述

总结

两种持久化方式的特点&区别如下:

在这里插入图片描述

两种持久化方式各有优点,可以根据实际需要结合使用;

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

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

相关文章

解决spring security No AuthenticationProvider found for com.问题

No AuthenticationProvider found for com.xxx.xx 原因 当你验证过,后记得这个这里返回true。不然,就会出现既没有异常,又没验证返回通过的中间尴尬状态,security会当做没有验证通过来处理。 修改

HCIA-存储虚拟化

1、虚拟化概述 KVM是所有云平台的底座,虚拟化是所有云的基础,虚拟化只提供基础架构,云可以提供服务。 CNA是个定制的欧拉系统EulerOS,基于centos内核只保留和虚拟化相关的代码,CNA默认已经部署好kvm虚拟化的软件。CNA…

Visutal Studio2022 如何使用Github copilot

visual studio 2019 升级最新版本的2019也并没有搜索到,直接升级到visual studio 2022,看发布介绍也是2022的copilot Copilot 是一款由 OpenAI 开发的基于 GPT 模型的代码生成工具,可帮助开发者更快地编写代码。如果想在 Visual Studio 中使…

基于大模型的属性操作生成高效训练数据

概述 这篇论文的研究背景是关于利用大型语言模型(LLM)生成高效训练数据的方法。 以往的方法通常是通过LLM生成新的数据,但缺乏对生成数据的控制,这导致了生成数据的信息不足以反映任务要求。本文提出了一种基于LLM的属性操作生成方法,通过精…

如何应对客户报价要求过低的情况?这些方案帮你化解危机!

有个客户在寄样品之前让报价,并且要求承诺价格必须低于15美金,业务员同意了,让客户把样板安排寄到中国,但是收到样品后发现客户的样品在侧面还有一块突出的部分,所以15美金太低了,无论如何也得18美金&#…

计组4——总线Plus IO

(CPU外部的)总线 用于连接computer3大模块(MC/GPUIO) CPU内部的片内总线判优由时序逻辑实现 composition& priority-judging 通信方式 CPU内部的片内总线用于取指、译码、执行、中断的数据通信; IO 总线分为控制线、数据线和地址线,对IO设备的…

Error:Invalid or corrupt jarfile xxx.jar

现象 上传jar包,执行报错:Error:Invalid or corrupt jarfile xxx.jar 解决办法 本地正常执行,上传服务器执行报错。排查发现是因为文件不完整导致,重新上传,比对文件大小,一致后重新执行成功&…

如何在电子设备行业运用IPD?

电子设备是指由集成电路、晶体管、电子管等电子元器件组成,应用电子技术(包括)软件发挥作用的设备,包括电子计算机以及由电子计算机控制的机器人、数控或程控系统等。电子设备基本解释为由微电子器件组成的电器设备。固定资产分类中的电子设备&#xff0…

【重温篇】八大排序——归并排序

思路 归并排序是一种经典的排序算法,采用分治法的思想。它将待排序的数组分成两个较小的子数组,分别对这两个子数组进行排序,然后将排好序的子数组合并成一个有序的数组。 归并排序的主要思路如下: 分解:将待排序的数…

JMETERbeanshell多种姿势获取目标值

beanshell通过vars方式取值 JMETER三种取值方法步骤_securitor的博客-CSDN博客 beanshell通过props方式取值 JMETER取值二_securitor的博客-CSDN博客 beanshell通过source方式取值 JMETER取值三_securitor的博客-CSDN博客 beanshell通过jar包方式取值 JMETER取值四_securitor的…

PHP客服系统-PhpWorkmanChat客服系统修改管理员密码

作为一款流行的开源PHP客服系统,基于thinkphp和workman,跨平台轻量级客服系统源码 管理员表是v2_admin 账户是admin,如果密码忘记了怎么办。可以直接修改数据库表v2_admin ,密码规则是md5(密码 加密盐) , 加密盐可以在…

STL源码刨析_stack _queue

目录 一. 介绍 1. stack 介绍 2. queue 介绍 二. 模拟实现 1. stack 模拟实现 2. queue 模拟实现 三. deque 1. deque 接口 2. 底层 一. 介绍 1. stack 介绍 stack(栈)是一种容器适配器,它提供了一种后进先出(LIFO&#xff0…

如何优化APP应用内的广告点击率?提升变现收益?

对于大部分广告主来说,广告点击率(CTR)越高越好,而点击率又与收益密切相关。如何优化点击率,让应用内的流量售卖收益最大化呢? 说到优化点击率,那么就一定要说说这个名词: 点击率&…

第五章 动态规划(一)——背包问题

文章目录 01背包问题完全背包多重背包分组背包背包练习题2. 01背包问题3. 完全背包问题4. 多重背包问题 I5. 多重背包问题 II9. 分组背包问题 01背包问题 n个物品,每个物品的体积为 v i v_i vi​,价值为 w i w_i wi​,每次只能选择一个物品放…

JavaScript的库——jquery

JavaScript的库——jquery 一、jQuery的hello 将代码写在一个闭包中 二、面试题: jQuery的ready函数和JavaScript的onload事件有什么区别? 是null,因为拿不到box,代码在后面,还没有执行。 所以需要将代码放在后面&am…

ControlNet新玩法!一键生成AI艺术二维码QR

AI绘画又又又又火出圈了!这波来源于AI人所发掘的ControlNet for QR Code 话不多说,看看效果图 这张看着极具个性的图像正是一个可以扫描的二维码,通过使用Stable Diffusion和Controlnet生成。由此定制生成个人艺术二维码,选择不同…

前端学习——JS进阶 (Day4)

深浅拷贝 练习 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice…

Antd的Select组件二次封装

提示&#xff1a;Select组件二次封装的目的,是为了在系统里面更方便、简洁地使用Select 这是官方写的使用方法是: import React from react; import { Select } from antd;const handleChange (value: string) > {console.log(selected ${value}); };const App: React.FC …

信息泄露与大数据:隐私安全的挑战与对策

随着大数据时代的到来&#xff0c;我们生活的方方面面都与数据息息相关。然而&#xff0c;随之而来的信息泄露问题也日益严重&#xff0c;给个人隐私和数据安全带来了巨大挑战。本文将围绕信息泄露与大数据展开讨论&#xff0c;探讨其中的问题、原因以及如何应对。 山海鲸大屏 …

langchain +SQLDatabase+Mysql+OpenAI

通过langchain SQLDatabaseMysql来获取数据 参照:https://github.com/hwchase17/langchain/issues/2333 from langchain import OpenAI, SQLDatabase, SQLDatabaseChain from sqlalchemy import create_enginefrom common.keys import OPENAI_API_KEYengine create_engine(m…