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的日常管理和维护至关重要,有助于确保数据的安全性和可用性。

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

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

相关文章

【御控物联】JavaScript JSON结构转换(19):数组To对象——规则属性重组

文章目录 一、JSON结构转换是什么?二、术语解释三、案例之《JSON数组 To JSON对象》四、代码实现五、在线转换工具六、技术资料 一、JSON结构转换是什么? JSON结构转换指的是将一个JSON对象或JSON数组按照一定规则进行重组、筛选、映射或转换&#xff0…

软件设计师29--并发控制

软件设计师29--并发控制 考点1:事务的特性例题: 考点2:并发问题并发产生的问题丢失更新不可重复读问题读“脏”数据 考点3:封锁协议例题: 考点1:事务的特性 原子性(Atomicity)&…

C顺序表:通讯录

目录 前言 通讯录数据结构 通讯录初始化 查找名字 增加联系人 删除联系人 展示所有联系人 查找联系人 修改信息 销毁通讯录 完整通讯录代码 前言 数据结构中的顺序表如果已经学会了,那么我们就可以基于顺序表来完成一个通讯录了 通讯录其实我们使用前…

红蓝色WordPress外贸建站模板

红蓝色WordPress外贸建站模板 https://www.mymoban.com/wordpress/5.html

Mysql底层原理十:Redo log

3.7 Redo log Redo log记录的是物理日志,具体就是哪个表空间,哪个数据页,哪个偏移量,改了几个字节,改成什么表空间号数据页号偏移量修改几个字节的值具体的值 3.7.1 Redo block (批处理缓存)…

nginx支持的多种负载均衡策略

目录 1.轮询(默认) 2. ip_hash 3. 加权轮询(weight) 4. fair(第三方) 5. 最少连接(least_conn) 1.轮询(默认) 将请求依次分配给每个服务器,确…

DeepSort行人车辆识别系统(实现目标检测+跟踪+统计)

文章目录 1、前言2、源项目实现功能3、运行环境4、如何运行5、运行结果6、遇到问题7、使用框架8、目标检测系列文章 1、前言 1、本文基于YOLOv5DeepSort的行人车辆的检测,跟踪和计数。 2、该项目是基于github的黄老师傅,黄老师傅的项目输入视频后&#x…

区块链相关概念

区块链是什么,就算是做计算机技术开发的程序员,100个当中都没有几个能把这个概念理解明白,更不要说讲清楚了。那对于普通人来说,就更扯了。 除了“挖矿”表面意思似乎比较好理解外,其他的基础概念真TMD绕。 去中心化、…

坚持十天做完Python入门100题第一天

坚持十天做完Python入门100题第一天 第1题 变量更新第2题 变量命名规则第3题 类型错误第4题 序列索引第5题 序列切片第6题 负数切片第7题 Range函数 第1题 变量更新 解析:Python代码的读取和执行是由上至下的,变量n一开始被赋值为1,但被更新了…

CLIP模型 图片问答

先简短介绍一下CLIP模型: CLIP (Contrastive Language–Image Pretraining) 是由 OpenAI 开发的先进的多模态视觉模型,结合了图像和文本处理能力。 CLIP 模型的主要特色在于它不仅可以理解图像,同时也能理解描述这些图像的文本。通过这样的方…

深度学习理论基础(七)Transformer编码器和解码器

学习目录: 深度学习理论基础(一)Python及Torch基础篇 深度学习理论基础(二)深度神经网络DNN 深度学习理论基础(三)封装数据集及手写数字识别 深度学习理论基础(四)Parse…

数据仓库面试总结

文章目录 1.什么是数据仓库?2.ETL是什么?3.数据仓库和数据库的区别(OLTP和OLAP的区别)4.数据仓库和数据集市的区别5.维度分析5.1 什么是维度?5.2什么是指标? 6.什么是数仓建模?7.事实表7.维度表…

Qt使用iostream的cout

在QT想使用iostream的cout。 参考以下博客: (转载)Qt中使用cout输出的方法 pro里加上; CONFIG console勾选 Run in Terminal clean工程,重新构建 上面是cout的,下面是我的另一个函数的qDebug输出的。

【动态规划-状态压缩dp】【蓝桥杯备考训练】:毕业旅行问题、蒙德里安的梦想、最短Hamilton路径、国际象棋、小国王【已更新完成】

目录 1、毕业旅行问题(今日头条2019笔试题) 2、蒙德里安的梦想(算法竞赛进阶指南) 3、最短Hamilton路径(《算法竞赛进阶指南》&模板) 4、国际象棋(第十二届蓝桥杯省赛第二场C A组/B组&#…

vue+springboot多角色登录

①前端编写 将Homeview修改为manager Manager&#xff1a; <template><div><el-container><!-- 侧边栏 --><el-aside :width"asideWidth" style"min-height: 100vh; background-color: #001529"><div style"h…

Jetpack Compose -> 状态机制的背后秘密

前言 上一章我们讲解了 Jetpack Compose 的无状态、状态提升、单向数据流 本章我们讲解下状态机制的背后秘密 List 前面我们讲过&#xff0c;通过 by mustableStateOf() 就可以被 Compose 自动订阅了&#xff1b;我们前面是通过 String 类型进行的自动订阅&#xff0c;那么换成…

C语言 | Leetcode C语言题解之第13题罗马数字转整数

题解&#xff1a; 题解&#xff1a; int romanToInt(char* s) {int symbolValues[26];symbolValues[I - A] 1;symbolValues[V - A] 5;symbolValues[X - A] 10;symbolValues[L - A] 50;symbolValues[C - A] 100;symbolValues[D - A] 500;symbolValues[M - A] 1000;int a…

基于Spring boot+Vue的业余排球俱乐部会员管理系统

5 系统功能模块的具体实现 5.1超级会员角色 5.1.1 登录 超级管理员登录通过用户名和密码去数据库查询用户表&#xff0c;该名称是否在用户表中存在&#xff0c;如果存在&#xff0c;则通过用户名和密码查询密码是否正确&#xff0c;然后吧用户的信息存在jwt的负载里&#xf…

【学习】渗透测试有哪些重要性

随着信息技术的迅猛发展&#xff0c;网络安全问题日益凸显。渗透测试作为网络安全防御的重要手段之一&#xff0c;旨在模拟黑客攻击&#xff0c;发现并修复潜在的安全漏洞&#xff0c;提高网络系统的安全性。本文将介绍渗透测试的概念、重要性、实施步骤及实践案例&#xff0c;…

PPT 操作

版式 PPT中&#xff0c;巧妙使用母版&#xff0c;可以提高效率。 双击母版&#xff0c;选择其中一个版式&#xff0c;插入装饰符号。 然后选择关闭。 这个时候&#xff0c;在该版式下的所有页面&#xff0c;就会出现新加入的符号。不在该版式下的页面&#xff0c;不会出现新加…