redis的常用基本命令与持久化

文章目录

  • redis的基本命令
    • 1.授权密码
    • 2.增加、覆盖、查询、删除、切换库名、移动、清空数据库
  • Redis持久化
    • RDB模式
      • 主动备份
      • 自动备份
        • RDB备份过程
    • AOF备份模式
      • 开启AOF备份模式
      • 执行流程
  • 总结

redis的基本命令

1.授权密码

config set requirepass 密码

设置完密码需要认证密码以后才能进行redis数据库的操作

auth 密码

查看密码

config get requirepass

我的密码为123123
在这里插入图片描述

2.增加、覆盖、查询、删除、切换库名、移动、清空数据库

增加键值对

set 键名 值

在这里插入图片描述
查询键值

get 键名

可以查出ry1的值为8701

删除键值

del 键名

在这里插入图片描述

覆盖 rename 覆盖会直接覆盖原来的键名,确定需要修改后再进行覆盖

rename 老键名  新键名

在这里插入图片描述
在这里插入图片描述
查看数据库中有多少条数据

dbsize 

在这里插入图片描述
查看此库中所有键名

keys * 

在这里插入图片描述
切换库名
redis数据库有0-15个库总共有16个库,进入redis默认是库0。

select 1

在这里插入图片描述

多数据库间移动数据

move 键名 库号

将10键从0库移到1库了
在这里插入图片描述

清空当前数据库

flushdb

清空所有数据库

flushall

Redis持久化

Redis持久化有两种模式,分别为RDB模式和AOF模式,其中RDB模式是类似与MySQL的回滚点,原理是将数据库数据作为快照保存在硬盘上AOF模式是原理是将 Reids 的操作日志以追加的方式写入文件

RDB模式

RDB持久化是指在指定的时间间隔内将内存中当前进程中的数据生成快照保存到硬盘(因此也称作快照持久化),用二进制压缩存储,保存的文件后缀是rdb;当Redis重新启动时,可以读取快照文件恢复数据

RDB模备份条件一共有两种
自动备份和主动备份

主动备份

RDB(Redis Database File)主动备份是指通过执行特定的命令来手动触发Redis的RDB持久化过程,从而创建一个数据快照。这个过程可以通过以下两个命令来实现:

  1. SAVE命令:
    • 当执行SAVE命令时,Redis主进程会立即开始执行RDB快照的创建工作。
    • 在这个过程中,主进程会阻塞,直到RDB文件创建完成。这意味着在SAVE命令执行期间,Redis将无法处理客户端的任何请求。
    • 一旦SAVE命令执行完毕,Redis会返回一个成功响应,表示快照已经创建完成。
  2. BGSAVE命令:
    • 当执行BGSAVE命令时,Redis主进程会fork一个子进程来执行实际的RDB快照写入操作。
    • 在fork过程中,主进程会暂时阻塞,以便复制其内存页表给子进程。一旦fork完成,子进程开始创建RDB快照,而主进程可以继续处理客户端的请求。
    • 子进程创建完RDB快照后,会用新的RDB文件替换掉旧的RDB文件,然后退出。
    • BGSAVE命令是异步执行的,因此它不会阻塞主进程,这使得BGSAVE比SAVE更适合在生产环境中使用。
      主动备份通常用于以下场景:
  • 定期备份:可以通过定时执行BGSAVE命令来定期创建数据快照,以便于进行数据备份和灾难恢复。
  • 手动备份:在需要的时候,可以通过执行SAVE或BGSAVE命令来手动创建一个数据快照。

自动备份

在自动触发RDB持久化时,Redis也会选择bgsave而不是save来进行持久化。

vim /etc/redis/6379.conf

219行
在这里插入图片描述
242行–是否开启RDB文件压缩
在这里插入图片描述

254行–指定RDB文件名
在这里插入图片描述

264行–指定RDB文件和AOF文件所在目录
在这里插入图片描述

RDB备份过程

您描述的RDB备份过程基本上是正确的,但是有一些细节需要澄清。以下是RDB备份过程的详细步骤:

  1. 执行BGSAVE命令
    • 当客户端向Redis发送BGSAVE命令时,主进程会检查是否有其他子进程正在执行BGSAVESAVE命令。
    • 如果有其他子进程正在执行这些命令,主进程会立即返回,因为同时只能有一个子进程用于RDB快照。
    • 如果没有子进程正在执行BGSAVESAVE命令,但有一个子进程正在执行BGREWRITEAOF命令,BGSAVE命令会等待BGREWRITEAOF命令完成后再执行。
  2. Fork子进程
    • 主进程fork一个子进程。在这个过程中,主进程会暂时阻塞,以便复制其内存页表给子进程。
    • 一旦fork完成,子进程开始执行RDB快照的创建工作,而主进程可以继续处理客户端的请求。
  3. 生成RDB文件
    • 子进程遍历数据库,生成一个包含所有数据库数据的RDB文件。这个文件是当前数据库状态的快照。
  4. 替换旧的RDB文件
    • 当子进程完成RDB文件的写入后,它会用这个新的RDB文件替换掉旧的RDB文件。
    • 替换完成后,子进程退出。
  5. 备份完成
    • 此时,BGSAVE命令执行完毕,一个新的RDB快照已经创建并替换了旧的快照文件。
      在整个过程中,主进程只在fork子进程时短暂阻塞,之后可以继续处理客户端的请求。这使得BGSAVE命令适合在生产环境中使用,因为它不会阻塞主进程太长时间。相比之下,SAVE命令会阻塞主进程直到RDB快照创建完成,因此不适合在生产环境中使用。

AOF备份模式

开启AOF备份模式

Redis服务器默认是关闭AOF的,而不是开启。要开启AOF持久化,你需要修改Redis的配置文件

vim /etc/redis/6379.conf

700行–修改,开启AOF
在这里插入图片描述

704行–指定AOF文件名称
在这里插入图片描述
796行–是否忽略最后一条可能存在问题的指令
在这里插入图片描述

执行流程

AOF(Append Only File)持久化的执行流程包括以下三个主要步骤:

  1. 命令追加(Append)
    当Redis执行写操作时,如设置键值、删除键等,这些操作的命令会被追加到AOF缓冲区(aof_buf)中。
  2. 文件写入与同步(Write and Sync)
    根据配置的同步策略,Redis会将AOF缓冲区中的内容写入到硬盘上的AOF文件。 同步策略决定了何时将缓冲区中的内容写入到硬盘,以及如何保证数据的一致性。
  3. 文件重写(Rewrite)
    为了优化性能和减少AOF文件的大小,Redis会定期对AOF文件进行重写。 重写过程会创建一个新的AOF文件,其中包含重建当前数据库状态所需的最小命令集。
    通过这个流程,AOF持久化确保了数据的安全性和可靠性,同时在保持高性能的同时减少了文件的大小。

AOF重写工作原理

AOF(Append Only File)重写是Redis中一个用于压缩和重建AOF文件的过程,以减少文件大小并加快重启时的恢复速度。AOF重写通过创建一个新的AOF文件来替换现有的AOF文件,新文件包含重建当前数据库状态所需的最少命令集合。以下是AOF重写的工作原理:

  1. 触发重写
    AOF重写可以由用户显式地通过执行BGREWRITEAOF命令来触发,也可以由Redis服务器自动触发,当AOF文件的大小超过配置的阈值时,Redis会自动执行AOF重写。
  2. 创建子进程
    当AOF重写被触发时,Redis主进程会fork一个子进程。这个子进程负责执行AOF重写操作,而主进程则继续处理客户端的请求。
  3. 构建新AOF文件
    子进程在内存中构建一个新的AOF文件,它遍历数据库中的每个键,并对其进行分析,生成对应的写入命令。对于每个键,它会生成一个最短的命令序列来重建当前的值。例如,对于一个经过多次修改的键,重写过程会生成一个单一的SET命令,而不是之前的多个修改命令。
  4. 追加新命令
    在子进程进行AOF重写的同时,主进程会继续处理客户端的请求。这些新请求会被写入到AOF缓冲区,并且也会追加到旧的AOF文件中,以保证数据的持久性。同时,这些新命令也会被复制到一个AOF重写缓冲区。
  5. 同步和替换文件
    当子进程完成新AOF文件的构建后,它会通知主进程。主进程会将AOF重写缓冲区中的新命令追加到新AOF文件中,然后使用新的AOF文件替换旧的AOF文件。此时,新的AOF文件包含了重建当前数据库状态所需的最少命令集合。
  6. 清理和后续处理
    替换文件后,Redis会清理旧的AOF文件,并继续将新的写入命令追加到新的AOF文件中。如果在这个过程中发生故障,Redis可以在重启时使用新的AOF文件来恢复数据。
    AOF重写是一个高效的过程,因为它不会阻塞主进程,并且生成的AOF文件通常会比原始文件小得多,这有助于减少磁盘空间的使用和加快Redis的启动时间。

总结

Redis的基本命令包括:

  1. 授权密码:通过config set requirepass设置密码,使用auth 密码进行认证。
  2. 增加、覆盖、查询、删除、切换库名、移动、清空数据库:这些命令用于管理数据库中的键值对,包括增加键值对(set 键名 值)、查询键值(get 键名)、删除键值(del 键名)、重命名键(rename 老键名 新键名)、查看数据库中的数据条数(dbsize)、查看库中所有键名(keys *)、切换库名(select 库号)、在不同数据库间移动数据(move 键名 库号)以及清空当前数据库(flushdb)和清空所有数据库(flushall)。

Redis的持久化机制包括两种模式:

  1. RDB模式:类似MySQL的回滚点,将数据库数据作为快照保存在硬盘上。RDB持久化可以通过主动备份(如执行SAVEBGSAVE命令手动创建数据快照)和自动备份(Redis自动执行BGSAVE命令)来实现。
  2. AOF模式:将Redis的操作日志以追加的方式写入文件,用于数据恢复和灾难恢复。
    这些命令和机制对于Redis的日常管理和维护至关重要,有助于确保数据的安全性和可用性。

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

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

相关文章

OpenAI劲敌出手!Claude 3正式发布,全面超越GPT-4。Claude3模型特点和使用教程分享

已有GPT官方账号不会升级GPT4请参考:【国内如何用gpt4?如何升级gpt4?保姆级教程】 一、Claude震撼发布焦点分析 1.Claude震撼发布 北京时间2024年3月4日晚间,Anthropic,毫无预警地发布了最新一代大模型Claude 3&…

echarts 地图 自己圈地图 乡镇街道

这个是方式是我实在不愿意做的! 如果有现成的最好,没有办法的情况下再用这个东西。 今天公司有一个项目,地方划分了一块区域,但是国家没有审核,但是项目里面用到了一个地图展示数据!然后就需要我们自己把…

【深度学习】深度学习md笔记总结第3篇:TensorFlow介绍,学习目标【附代码文档】

深度学习笔记完整教程(附代码资料)主要内容讲述:深度学习课程,深度学习介绍要求,目标,学习目标,1.1.1 区别,学习目标,学习目标。TensorFlow介绍,2.4 张量学习目标,2.4.1 张量(Tensor),2.4.2 创建张量的指令,2.4.3 张量…

Java 包装类初识泛型

登神长阶 第六阶 包装类&初识泛型 目录 😀一.包装类 😄1.基本数据类型以及其对应的包装类 😂2.装箱和拆箱 😇2.1.装箱(Boxing) 😉2.2.拆箱(Unboxing) &#x…

[计算机知识] 各种小问题思考

哈希算法以及哈希冲突 哈希算法:将任何长度的输入通过散列函数转换成固定长度的字符串 哈希冲突:不同的输入经过哈希函数处理后得到相同的哈希值 因为哈希函数的输出域是有限的 解决哈希冲突: 1. 开放寻址:产生哈希冲突后&…

C语言程序与设计——指针地址与main函数

指针变量 在C语言中,最重要的就是对于指针和地址的理解,因为C语言是更接近底层的编程语言,所以它可以允许开发者对内存操作,这也是区别于其它编程语言的一个重要特性。 如何对内存进行操作呢。我们知道在编程过程中,在…

续二叉搜索树递归玩法

文章目录 一、插入递归二、寻找递归&#xff08;非常简单&#xff0c;走流程就行&#xff09;三、插入递归&#xff08;理解起来比较麻烦&#xff09; 先赞后看&#xff0c;养成习惯&#xff01;&#xff01;&#xff01;^ _ ^<3 ❤️ ❤️ ❤️ 码字不易&#xff0c;大家的…

ruoyi-nbcio-plus基于vue3的flowable流程设计器主界面升级修改

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 http://122.227.135.243:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a…

瑞_Redis_商户查询缓存

文章目录 项目介绍1 短信登录2 商户查询缓存2.1 什么是缓存2.1.1 缓存的应用场景2.1.2 为什么要使用缓存2.1.3 Web应用中缓存的作用2.1.4 Web应用中缓存的成本 2.2 添加Redis缓存2.2.1 背景2.2.2 缓存模型和思路2.2.3 代码实现2.2.4 测试附&#xff1a;IDEA控制台输出自动换行设…

Railway免费部署Flowise AI工作流教程

&#x1f9d9;‍♂️ 诸位好&#xff0c;吾乃斜杠君&#xff0c;编程界之翘楚&#xff0c;代码之大师。算法如流水&#xff0c;逻辑如棋局。 &#x1f4dc; 吾之笔记&#xff0c;内含诸般技术之秘诀。吾欲以此笔记&#xff0c;传授编程之道&#xff0c;助汝解技术难题。 &#…

C++中的vector与C语言中的数组的区别

C中的vector和C语言中的数组在很多方面都有所不同&#xff0c;以下是它们之间的一些主要区别&#xff1a; 大小可变性&#xff1a; vector是C标准模板库&#xff08;STL&#xff09;提供的动态数组容器&#xff0c;它的大小可以动态增长或减少。这意味着你可以在运行时添加或删…

常见滤波算法(PythonC版本)

简介 受限于MCU自身的ADC外设缺陷&#xff0c;精度和稳定性通常较差&#xff0c;很多场景下需要用滤波算法进行补偿。滤波的主要目的是减少噪声与干扰对数据的影响&#xff0c;让数据更加接近真实值。 一阶低通滤波 一阶低通滤波是一种信号处理技术&#xff0c;用于去除信号中…

Verilog奇技淫巧(二)

1. Verilog系统函数及其作用总结 $time用来查看当前仿真时刻&#xff0c;返回一个64bit的整数来表示的当前仿真时刻&#xff1b; $ realtime和$time的作用相同&#xff0c;$realtime但是返回的时间数字是一个实型数&#xff1b; $readmemb&#xff0c;用来从文件中读取数据到…

从redux的基本概念渐进式理解redux/toolkit的用法

概念 Redux toolkit是帮助提高redux开发效率的一个库 React-redux 是将React和Redux toolkit绑定在一起的一个库 action 是一个对象,里面有一个type属性 action creator是一个函数,这个函数可以返回上面的action对象。 reducer 是一个函数,接受两个参数(initilastate, acti…

北京哪位医生治疗糖尿病比较好?

糖尿病是一种常见的慢性疾病&#xff0c;主要是由于胰岛素分泌不足或利用障碍导致的以高血糖为特征的代谢性疾病。持续的高血糖和长期的代谢紊乱可能导致全身组织器官&#xff0c;特别是眼、肾、心血管及神经系统的损害和功能障碍。 北京崇文门医院朱学敏主任在糖尿病领域有有着…

LLM端侧部署系列 | 如何将阿里千问大模型Qwen部署到手机上?实战演示(下篇)

引言 简介 编译Android可用的模型 转换权重 生成配置文件 模型编译 编译apk 修改配置文件 绑定android library 配置gradle 编译apk 手机上运行 安装 APK 植入模型 效果实测 0. 引言 清明时节雨纷纷&#xff0c;路上行人欲断魂。 小伙伴们好&#xff0c;我是《小…

Matlab有限元编程案例全家桶【源码+理论文本】

专栏导读 作者简介&#xff1a;工学博士&#xff0c;高级工程师&#xff0c;专注于工业软件算法研究本文已收录于专栏&#xff1a;《有限元编程从入门到精通》本专栏旨在提供 1.以案例的形式讲解各类有限元问题的程序实现&#xff0c;并提供所有案例完整源码&#xff1b;2.单元…

制作一个RISC-V的操作系统九-上下文切换和协作式多任务(任务 任务上下文 多任务 多任务系统分类 协作式多任务 代码实现 )

文章目录 任务任务上下文多任务多任务系统分类协作式多任务代码实现asm volatile("csrw mscratch, %0" : : "r" (x));lw和swp tp 和 zero寄存器 待实现 任务 理解为一个段要执行的指令 任务上下文 理解为执行该任务时对应的CPU的寄存器各个状态 多任务…

Java并发编程基础面试题详细总结

1. 什么是线程和进程? 1.1 何为进程? 进程是程序的一次执行过程&#xff0c;是系统运行程序的基本单位&#xff0c;因此进程是动态的。系统运行一个程序即是一个进程从创建&#xff0c;运行到消亡的过程。 在 Java 中&#xff0c;当我们启动 main 函数时其实就是启动了一个…

【重学C语言】四、运算符和表达式

【重学C语言】四、运算符和表达式 概念左值与右值运算符一元运算符二元运算符三元运算符 优先级结合性 基本运算符赋值运算符算术运算符复合赋值运算符位运算符应用条件和逻辑运算符条件运算符逻辑运算符逻辑短路逻辑与&#xff08;&&&#xff09;的短路行为逻辑或&…