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.mzph.cn/news/790647.shtml

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

相关文章

云计算存在的安全隐患

目录 一、概述 二、ENISA云安全漏洞分析 三、云计算相关系统漏洞 3.1 概述 3.2 漏洞分析 3.2.1 Hypervisor漏洞 3.2.1.1 CVE-2018-16882 3.2.1.2 CVE-2017-17563 3.2.1.3 CVE-2010-1225 3.2.2 虚拟机漏洞 3.2.2.1 CVE-2019-14835 3.2.2.2 CVE-2019-5514 3.2.2.3 CV…

备战蓝桥杯,用JAVA刷洛谷算法题单:【算法2-2】常见优化技巧

参考 【算法2-2】常见优化技巧 - 题单 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) P1102 A-B 数对P1638 逛画展P1115 最大子段和P7072 [CSP-J2020] 直播获奖P2671 [NOIP2015 普及组] 求和P4147 玉蟾宫P2866 [USACO06NOV] Bad Hair Day SP1950 长方形P2032 扫描P2216 [HAOI…

ES9学习 -- 对象的剩余参数与扩展运算符 / 正则扩展 / Promise.finally / 异步迭代

文章目录 1. 对象的剩余参数与扩展运算符1.1 对象的剩余参数1.2 扩展运算符 2. 正则扩展3. Promise.finally4. 异步迭代4.1 同步遍历器的问题4.2 异步遍历器使用 1. 对象的剩余参数与扩展运算符 1.1 对象的剩余参数 let obj { name:"kerwin", age:100, location:&…

推理端框架简介 高通SNPE 神经网络处理引擎 阿里巴巴 MNN 腾讯 FeatherCNN 端侧推理引擎 卷积计算优化 卷积计算优化

高性能计算(High performance computing, 缩写HPC) 指通常使用很多处理器(作为单个机器的一部分) 或者某一集群中组织的几台计算机(作为单个计 算资源操作)的计算系统和环境。 有许多类型的HPC 系统,其范围从标准计算机的大型集群,到高度专用的硬件。 大多数基于集群的H…

MVCC详细总结

简介 MVCC(Multi-Version Concurrency Control)是一种多版本并发控制机制,主要用于数据库管理系统中,实现对数据库的并发访问。在编程语言中,MVCC可以实现事务内存。 MVCC的特点是读不加锁,读写不冲突。MVC…

(表征学习论文阅读)FINITE SCALAR QUANTIZATION: VQ-VAE MADE SIMPLE

1. 前言 向量量化(Vector Quantization)或称为矢量量化最早在1984年由Gray提出,主要应用于数据压缩、检索领域,具体的阐述可以参考我写的另一篇关于VQ算法的文章。随着基于神经网络的离散表征学习模型的兴起,VQ技术也…

二维动画制作软件 Animate 2024 for mac激活版

Animate 2024 for Mac是一款功能强大的二维动画制作软件,专为Mac用户打造。它提供了丰富的动画编辑功能,使用户能够轻松创建出生动逼真的动画作品。无论是短片、广告还是游戏等应用领域,Animate 2024都能发挥出出色的表现。 软件下载&#xf…

部署k8s客户端,及docker私仓部署

1.部署一个docker私仓 mkdir /opt/docker/registry #配置仓库密码 mkdir /opt/docker/auth cd /opt/docker/auth htpasswd -Bbn admin admin > htpasswd#运行docker私仓服务,下面端口5000:5000 前面的5000对应本机端口可以自定义 docker run -itd \ -v /opt/d…

【Layui】------ layui实现table表格拖拽行、列位置的示例代码

一、完整的示例代码&#xff1a;&#xff08;请使用layui v2.8.3的版本&#xff09;看懂就能用、不要照搬、照搬会出错误、拷贝重要代码改改符合你自己的需求。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><…

MapReduce [OSDI‘04] 论文阅读笔记

原论文&#xff1a;MapReduce: Simplified Data Processing on Large Clusters (OSDI’04) 1. Map and Reduce Map&#xff1a;处理键值对&#xff0c;生成一组中间键值对Reduce&#xff1a;合并与同一中间键相关的所有中间值process overview&#xff1a;分割输入数据&#x…

DSO9254A安捷伦DSO9254A示波器

181/2461/8938产品概述&#xff1a; 安捷伦DSO9254A的带宽为2.5 GHz&#xff0c;配备15英寸XGA液晶显示屏&#xff0c;采用静音封装&#xff0c;厚度仅为9英寸&#xff08;23厘米&#xff09;&#xff0c;重量仅为26磅&#xff08;11.8千克&#xff09;。DSO9254A集成了一个功…

UE4_自定义反射和折射和法线图

UE4 自定义反射和折射和法线图 2020-05-22 09:36 将ReflectionVector和反射图像进行ViewAlignedReflection,输出的textrue和相机位置CameraPosition的onePlus进行Dot点乘之后乘以一个float系数反射度&#xff0c;输出给固有色&#xff0c;就有反射效果了。球型反射。 折射&…

Coze工作流介绍(一)

Coze工作流介绍 工作流支持通过可视化的方式&#xff0c;对插件、大语言模型、代码块等功能进行组合&#xff0c;从而实现复杂、稳定的业务流程编排&#xff0c;例如旅行规划、报告分析等。 当目标任务场景包含较多的步骤&#xff0c;且对输出结果的准确性、格式有严格要求时…

JAVAEE—Callable接口,ReentrantLock,synchronized的工作过程

文章目录 Callable接口的用法Callable与FutureTask类 加锁的工作过程什么是偏向锁呢&#xff1f;举个例子 轻量级锁重量级锁 ReentrantLockReentrantLock 的用法: Callable接口的用法 Callable 是一个 interface . 相当于把线程封装了一个 “返回值”. 方便程序猿借助多线程的…

Ubuntu20.04使用Neo4j导入CSV数据可视化知识图谱

1.安装JDK&#xff08; Ubuntu20.04 JDK11&#xff09; sudo apt-get install openjdk-11-jdk -y java -version which java ls -l /usr/bin/java ls -l /etc/alternatives/java ls -l /usr/lib/jvm/java-11-openjdk-amd64/bin/java确认安装路径为/usr/lib/jvm/java-11-openjd…

Celery的任务流

Celery的任务流 在之前调用任务的时候只是使用delay()和apply_async()方法。但是有时我们并不想简单的执行单个异步任务&#xff0c;比如说需要将某个异步任务的结果作为另一个异步任务的参数或者需要将多个异步任务并行执行&#xff0c;返回一组返回值&#xff0c;为了实现此…

STL是什么?如何理解STL?

文章目录 1. 什么是STL2. STL的版本3. STL的六大组件4. 如何学习STL5.STL的缺陷 1. 什么是STL STL(standard template libaray-标准模板库)&#xff1a;是C标准库的重要组成部分&#xff0c;不仅是一个可复用的组件库&#xff0c;而且是一个包罗数据结构与算法的软件框架。 2. …

OpenHarmony实战开发-使用一次开发多端部署实现一多设置典型页面

介绍 本示例展示了设置应用的典型页面&#xff0c;其在小窗口和大窗口有不同的显示效果&#xff0c;体现一次开发、多端部署的能力。 1.本示例使用一次开发多端部署中介绍的自适应布局能力和响应式布局能力进行多设备&#xff08;或多窗口尺寸&#xff09;适配&#xff0c;保…

WebGIS 之 vue3+vite+ceisum

1.项目搭建node版本在16以上 1.1创建项目 npm create vite 项目名 1.2选择框架 vuejavaScript 1.3进入项目安装依赖 cd 项目名 npm install 1.4安装cesium依赖 pnpm i cesium vite-plugin-cesium 1.5修改vite.config.js文件 import { defineConfig } from vite import vue fr…

RK3568 RTC驱动实验

RK3568 RTC驱动实验 1. RTC简介 ​ RTC 也就是实时时钟&#xff0c;用于记录当前系统时间&#xff0c;对于 Linux 系统而言时间是非常重要的&#xff0c;使用 Linux 设备的时候也需要查看时间。RTC是Linux的时间系统。 ​ RTC 设备驱动是一个标准的字符设备驱动&#xff0c;…