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

news2024/11/17 0:17:41

文章目录

  • 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.coloradmin.cn/o/1568037.html

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

相关文章

最简单的 H.264 视频码流解析程序

最简单的 H.264 视频码流解析程序 最简单的 H.264 视频码流解析程序原理源程序运行结果下载链接参考 最简单的 H.264 视频码流解析程序 参考雷霄骅博士的文章:视音频数据处理入门:H.264视频码流解析 本文中的程序是一个H.264码流解析程序。该程序可以从…

​IAA+IAP混合变现趋势下,出海手游广告玩法解析 | TopOn出海干货

3月23日,TopOn 携手罗斯基及汇量科技旗下一站式跨渠道智能投放工具XMP联合主办的“2023游戏出海新机会”上海站线下沙龙成功举办。 本次活动邀请到多位业内知名公司、平台的负责人,分别从海外投放增长策略、产品融合玩法方向、商业混合变现模式、三方安…

C++万物起源:类与对象(三)拷贝构造、赋值重载

目录 一、拷贝构造函数 1.1拷贝构造函数的概念与特征 1.2拷贝构造的实现 1.3默认构造函数 1.4拷贝构造函数典型调用场景 二、赋值运算符重载 2.1赋值运算符重载的格式 一、拷贝构造函数 1.1拷贝构造函数的概念与特征 在c语言语法中,我们可以将一个变量赋值给…

OSPF中配置静态路由备份 实验简述

OSPF中配置静态路由备份 实验简述 静态路由备份是一种网络路由的备份机制,用于提高网络的可靠性和冗余性。而静态路由备份则是在主路由失效时,自动切换到备用路由,以确保网络的连通性。 主路由默认优先级为60,备份路由设置优先级1…

Doris实践——信贷系统日志分析场景的实践应用

目录 前言 一、早期架构演进 1.1 架构1.0 基于Kettle MySQL离线数仓 1.2 架构2.0 基于 Presto / Trino统一查询 二、基于Doris的新一代架构 三、新数仓架构搭建经验 3.1 并发查询加速 3.2 数仓底座建设 四、Doris助力信DolphinScheduler 和 Shell 贷业务场景落地 4.…

前端学习<四>JavaScript基础——03-常量和变量

常量(字面量):数字和字符串 常量也称之为“字面量”,是固定值,不可改变。看见什么,它就是什么。 常量有下面这几种: 数字常量(数值常量) 字符串常量 布尔常量 自定义…

C#编写MQTT客户端软件

主要参考C#MQTT编程06--MQTT服务器和客户端(winform版)_c#mqttserver-CSDN博客 但由于使用的.NET版本和MQTT库版本存在差异,因此有些不同。 MQTT协议内容在此不做描述,仅介绍VS使用C#的实现过程。本次使用VS2015,.netframwork4.6。 C#语言本身…

从零到一:基于 K3s 快速搭建本地化 kubeflow AI 机器学习平台

背景 Kubeflow 是一种开源的 Kubernetes 原生框架,可用于开发、管理和运行机器学习工作负载,支持诸如 PyTorch、TensorFlow 等众多优秀的机器学习框架,本文介绍如何在 Mac 上搭建本地化的 kubeflow 机器学习平台。 注意:本文以 …

STM32单片机智能电表交流电压电流程序设计(电流 电压互感器TV1005M+TA1005M)

资料下载地址:STM32单片机智能电表交流电压电流程序设计(电流 电压互感器TV1005MTA1005M) 1、摘要 5、基于STM32F103单片机智能电表交流电压电流设计 本设计由STM32单片机核心板电路交流电压电流检测模块电路WIFI模块电路指示灯电路组成。 1、通过电压互感器TV100…

【Canavs与艺术】绘制蓝白绶带大卫之星勋章

【图例】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>用Canvas绘制蓝白绶带大卫之星勋章</title><style type&quo…

计算机网络—TCP协议详解:特性、应用(2)

&#x1f3ac;慕斯主页&#xff1a;修仙—别有洞天 ♈️今日夜电波&#xff1a;マリンブルーの庭園—ずっと真夜中でいいのに。 0:34━━━━━━️&#x1f49f;──────── 3:34 &#x1f504; ◀️…

我愿把这个网站成为全球最强AI网站!弄100多个AI伺候你??

家人们&#xff0c;你们猜我发现了什么牛逼的AI网站&#xff1f;&#xff1f; 直接上图&#xff1a; 这个网站&#xff0c;聚合了国内外100多个顶尖的AI&#xff0c;包括了OpenAI家的GPT3.5、GPT4、GPT4V、GPT4.5系列&#xff0c;以及Anthropic家的Claude3 Opus、Claude3 Sone…

Spark-Scala语言实战(11)

在之前的文章中&#xff0c;我们学习了如何在spark中使用RDD中的cartesian,subtract最终两种方法。想了解的朋友可以查看这篇文章。同时&#xff0c;希望我的文章能帮助到你&#xff0c;如果觉得我的文章写的不错&#xff0c;请留下你宝贵的点赞&#xff0c;谢谢。 Spark-Scal…

如何系统地自学Python

1、如何系统地自学Python 小白的话可以快速过一下某马&#xff0c;某谷。 主要关注Python有什么集合&#xff0c;里面的集合怎么使用 然后再找一个Python爬虫实战视频&#xff0c;先跟着视频敲一遍代码&#xff0c;然后再尝试自己做一遍 然后再找一个Python服务开发视频&am…

redis乱码\xac\xed\x00\x05t\x00H解决

发现数据库乱码&#xff1a; 这数据库是来自rdids队列list实现的一个简单队列&#xff0c;停止使用该list的服务&#xff0c;查看里面的值&#xff0c;发现 乱码\xac\xed\x00\x05t\x00H&#xff0c;如下图&#xff1a; 很明发送数据端的问题&#xff0c;检查代码&#xff1a; …

如何保持数据一致性

如何保持数据一致性 数据库和缓存&#xff08;比如&#xff1a;redis&#xff09;双写数据一致性问题&#xff0c;是一个跟开发语言无关的公共问题。尤其在高并发的场景下&#xff0c;这个问题变得更加严重。 问题描述&#xff1a; 1.在高并发的场景中&#xff0c;针对同一个…

【python】python新闻内容zhua取分析词云可视化(源码)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

Redis的基础操作

目录 一、Redis命令工具 1.redis-cli 命令行工具 2.redis-benchmark测试工具 3.Redis数据库五大类型 1、String 2、List 3、Hash&#xff08;散列类型&#xff09; 4、set无序集合 5、sorted set 二、Redis数据库常用命令 1、set与get的使用 2.查看数据库中键的情况…

深度学习:神经网络模型的剪枝和压缩简述

深度学习的神经网路的剪枝和压缩&#xff0c;大致的简述&#xff0c; 主要采用&#xff1a; network slimming&#xff0c;瘦身网络... 深度学习网络&#xff0c;压缩的主要方式&#xff1a; 1.剪枝&#xff0c;nerwork pruing&#xff0c; 2.稀疏表示&#xff0c;sparse rep…

基于向量数据库搭建自己的搜索引擎

前言【基于chatbot】 厌倦了商业搜索引擎搜索引擎没完没了的广告&#xff0c;很多时候&#xff0c;只是需要精准高效地检索信息&#xff0c;而不是和商业广告“斗智斗勇”。以前主要是借助爬虫工具&#xff0c;而随着技术的进步&#xff0c;现在有了更多更方便的解决方案&…