首页 > 数据库 >Redis进一步学习

Redis进一步学习

时间:2023-11-23 17:11:35浏览次数:31  
标签:AOF 文件 数据库 Redis 学习 进一步 RDB 服务器

Redis

 

 

 

 

 

 

 

 

 

AOF(Append-Only File)和RDB(Redis DataBase)是Redis数据库持久化的两种主要方式,它们都用于在Redis服务器重启时保留数据。

AOF(Append-Only File):

想象一下AOF就像是数据库的操作日志,记录了所有对Redis数据的写操作。每当有一个写操作发生时,比如SET、INCR等,Redis就会将这个操作追加到AOF文件的末尾。这样,AOF文件就包含了数据库的完整操作历史。

生动一点来说,你可以把AOF想象成一本不断被写入的笔记本,记录了你对数据库的每一次修改。当Redis需要恢复数据时,它只需要重新执行AOF文件中的写操作,就能还原到最新状态。

RDB(Redis DataBase):

RDB则更像是数据库的快照。它定期将当前数据库的状态保存到一个二进制文件中。这个文件包含了某个时间点上数据库的所有数据。

生动一点来说,你可以把RDB想象成一张快照照片,记录了数据库在某个瞬间的状态。当Redis需要恢复数据时,它只需要加载最新的RDB文件,就能回到那个时间点的数据状态。

比喻:

如果把Redis比喻成一个厨房,AOF就像是一本记录了每一次烹饪过程的食谱,而RDB则是在特定时刻拍摄的一张整个厨房的照片。当你需要重新装修厨房(Redis服务器重启)时,你可以选择按照食谱一步步重新烹饪(AOF),也可以选择把厨房还原到某个时间点的状态(RDB)。

总的来说,AOF提供了更详细的历史记录,但文件相对较大,而RDB则提供了一个更轻量级的快照,用于更快速的恢复。在实际应用中,你也可以选择同时使用两种持久化方式,以便在需要时既能够快速启动,又能够保留详细的历史操作。

 

尽管AOF(Append-Only File)和repl_backlog都与保存写操作有关,但它们的设计目的、实现方式和使用场景不同,因此不适合合并到一个文件中。以下是它们之间的一些主要区别:

  1. 设计目的不同:

    • AOF: 设计为提供持久性,以便在服务器重启时还原数据库状态。AOF文件包含了实际的写操作历史,用于确保数据的持久性和安全性。

    • repl_backlog 设计为支持主从复制。它并不是为了持久化数据,而是为了在主服务器写入数据时,确保从服务器可以追赶上主服务器的写操作,以保持主从数据的一致性。

  2. 数据格式和结构不同:

    • AOF: 存储的是实际的Redis命令,以文本格式保存,比如SET key value。AOF文件是一个可读的文本文件。

    • repl_backlog 存储的是二进制格式的写操作记录,包括了一系列的写命令和相关信息。这并不是一个可读的文本文件。

  3. 使用场景不同:

    • AOF: 用于数据持久性,适用于需要确保数据安全、恢复历史操作的场景。

    • repl_backlog 用于主从复制,确保从服务器能够追赶上主服务器的写操作,以保持数据的一致性。

  4. 实现方式不同:

    • AOF: 是一个追加写入的文本文件,记录了实际执行的Redis命令,以确保数据的完整性和可读性。

    • repl_backlog 是一个环形缓冲区,以二进制格式保存了最近的写操作记录,主要用于复制场景,不需要保存过多历史数据。

合并到一个文件可能会使文件的结构更为复杂,而且由于设计目的不同,可能导致文件中的数据结构和格式变得混乱难以管理。因此,分别使用AOF和repl_backlog更有助于分别满足持久性和复制的需求。

在Redis中,"database"(数据库)通常是指Redis服务器上的不同命名空间,每个命名空间都可以看作是一个独立的数据库。在默认配置下,Redis服务器有16个数据库,从0到15,分别表示为db0db15

每个数据库都是一个独立的存储空间,可以存储键值对(key-value pairs)。你可以使用SELECT命令来切换当前使用的数据库。例如,SELECT 1表示切换到第2个数据库(因为数据库编号从0开始)。

下面是一些关于Redis数据库的重要概念:

  1. 默认数据库: 当你连接到Redis服务器时,默认使用的是第0个数据库,即db0。你可以使用SELECT命令切换到其他数据库。

    SELECT 1   # 切换到第2个数据库(db1)
  2. 多数据库的作用: 多数据库功能允许你在同一个Redis实例中划分不同的数据集,每个数据库可以独立管理自己的键值对。这在一些场景下很有用,比如将不同的应用或模块的数据存储在不同的数据库中,以便更好地管理和隔离数据。

  3. 数据库切换注意事项: 在Redis中,切换数据库并不会创建新的数据库,而是在切换的时候检查数据库是否存在,如果不存在则创建。这意味着如果你使用SELECT命令切换到一个新的数据库,然后存储一些数据,那么这个数据库就会被创建。因此,需要注意避免通过SELECT命令随意切换数据库。

  4. 持久化: 每个数据库都可以独立配置持久化方式,可以选择使用AOF(Append-Only File)、RDB(Redis DataBase)或者同时使用两者。

标签:AOF,文件,数据库,Redis,学习,进一步,RDB,服务器
From: https://www.cnblogs.com/cooooooooookie/p/17852025.html

相关文章

  • 【转载】Laravel10.x 使用 Redis
    参考https://blog.csdn.net/china773728236/article/details/123217974https://blog.csdn.net/CrayonShinChaner/article/details/120622009https://blog.csdn.net/l2x1314258/article/details/114965680https://learnku.com/docs/laravel/10.x/redis/14887(如果不方便开启p......
  • 深度学习基础知识-网络
    循环神经网络(RerrentNeuralNetwork,RNN): 特点:对具有序列特性的数据非常有效,能挖掘数据中的时序信息以及语义信息序列特性:符合时间顺序,逻辑顺序,或者其他顺序就叫序列特性深度神经网络DNN,卷积神经网络CNN,生成对抗网络GAN ......
  • Go标准库学习:strings和bytes
    strings包和bytes包strings包和bytes包非常像,几乎所有函数都有string和[]byte两种接口,其中前者被实现在strings包中,而后者被是现在bytes包中,所以这里将这两个包一起学习。官方文档:strings包:https://pkg.go.dev/[email protected]包:https://pkg.go.dev/[email protected]函数......
  • 20211325 2023-2024-1 《信息安全系统设计与实现(上)》第十一周学习笔记
    202113252023-2024-1《信息安全系统设计与实现(上)》第十一周学习笔记一、任务要求自学教材第13章,提交学习笔记(10分),评分标准如下1.知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容(4分)“我在学***X......
  • Linux第六章学习笔记
    本章学习目标1.掌握输入/输出重定向2.熟悉管道符的应用3.了解进程管道相关知识 I/O重定向给出两个进程(见书本88,89页),上述两个进程都有0、1、2这三个文件描述符,这也是绝大多数进程都有的。0表示标准输入,可以理解为键盘输入;1表示标准输出,输出到终端;2表示标准错误,输出到终端;3及......
  • 2023-2024-1学期20232423《网络空间安全导论》第三周学习总结
    防火墙的那个部分最容易被攻陷,加固方法有哪些教材学习——网络安全基础3.1网络安全概述3.2网络安全防护技术对于计算机来说,可攻破的入口有很多,所以需要我们不断地提升技术、寻找防护方法,并不断加固我们的防御。3.3网络安全工程与管理3.4新型网络及安全技术对于新生......
  • 刘金玉QT学习笔记:6-sqlite简易入门+QT结合使用
    //第一篇,测试一下1.Sqlite-linux自带-轻量级-关系型数据库2.安装-进入官网后点击Downloads-下载下图的两个zip,解压后把里面的文件放到C盘下自创一个sqlite的文件夹3.通过命令行使用sqlite3.exe来使用数据库-配环境变量作用:不用进入路径位置就可以打开(sqlite)4.基本......
  • 第十一周学习笔记
    TCP/IP和网络编程......
  • Linux第五章学习笔记
    进程是什么?进程是一个正在运行的程序的实例。每个进程都有一个唯一的PID(进程ID),由内核分配。进程可以是前台进程或后台进程。前台进程是一个正在与用户交互的进程,而后台进程是没有与用户交互的进程。进程状态在Linux中,进程可以处于以下状态之一:运行态(running):进程正在执行......
  • 学习笔记11
    苏格拉底挑战第十三章TCP/IP和网络编程一、知识点归纳(一)网络编程简介如今,上网已成为日常生活的需要。虽然大多数人可能只把互联网作为一种信息收集、网上购物和社交媒体等的工具,但计算机科学的学生必须对互联网技术有一定的了解,并掌握一定的网络编程的技能。在本章中,我们......