首页 > 数据库 >Redis之持久化

Redis之持久化

时间:2024-06-11 11:44:59浏览次数:12  
标签:aof 持久 文件 0.1 Redis redis 6379 rdb

Redis持久化

Redis 是内存数据库,如果不将内存中的数据库状态保存到磁盘,那么一旦服务器进程退出,服务器中的数据库状态也会消失。所以 Redis 提供了持久化功能!

RDB(Redis DataBase)

在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是Snapshot快照,它恢复时是将快照文件直接读到内存里。Redis默认为RDB模式。

Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。
整个过程中,主进程是不进行任何IO操作的。这就确保了极高的性能。如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方式要比AOF方式更加的高效。
RDB的缺点是最后一次持久化后的数据可能天失。

1、测试持久化操作

  • 修改配置文件
#vi  redis.conf

save 60 5                  #只要60s内修改了5次key,就会触发rdb操作
dbfilename dump.rdb        #RDB持久化文件
  • 删除默认的rdb文件
#cd /usr/local/bin/dump.rdb
# ls
dump.rdb  redis-benchmark  redis-check-aof  redis-check-rdb  redis-cli  redis-sentinel  redis-server
# rm -rf dump.rdb
# ls
redis-benchmark  redis-check-aof  redis-check-rdb  redis-cli  redis-sentinel  redis-server
  • 创建KEY,60s内创建完成
127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> set k2 v2
OK
127.0.0.1:6379> set k3 v3
OK
127.0.0.1:6379> set k4 v4
OK
127.0.0.1:6379> set k5 v5
OK
  • 生成新的dump.rdb文件
# ls
dump.rdb         redis-check-aof  redis-cli       redis-server redis-benchmark  redis-check-rdb  redis-sentinel

2、触发机制

  • save的规则满足的情况下,会自动触发rdb规则;
  • 执行 flusha 命令,也会触发rdb规则;
  • 退出redis,也会产生 rdb 文件;

3、如果恢复rdb文件
只需要将rdb文件放在我们redis启动目录就可以,redis启动的时候会自动检査dump.rdb 恢复其中的数据。

  • 获取RDB文件的目录
127.0.0.1:6379> CONFIG get dir
1) "dir"
2) "/usr/local/bin"

4、优点&缺点
优点

  • 适合大规模的数据恢复
  • 对数据的完整性要不高
    缺点
  • 需要一定的时间间隔进程操作,如果redis意外宕机了,这个最后一次修改数据就没有的了
  • fork进程的时候,会占用一定的内容空间

AOF(Append Only File)

将我们的所有命令都记录下来,类似mysql二进制文件,恢复的时候就把这个文件全部在执行一遍。

以日志的形式来记录每个写操作,将Redis执行过的所有指令记录下来(读操作不记录),只许追加文件但不可以改写文件。
redis启动之初会读取该文件重新构建数据,换言之,redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作
Aof保存的是 appendonly.aof 文件

1、测试AOF

  • 修改配置文件
#vi  redis.conf
appendonly yes
  • 重启服务
# redis-cli -p 6379
127.0.0.1:6379> SHUTDOWN
not connected> exit
# redis-server /data/apps/redis-7.0.15/redis.conf
  • 数据写入
# redis-cli -p 6379
127.0.0.1:6379> config get appendonly
1) "appendonly"
2) "yes"
127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> set k2 v2
OK
127.0.0.1:6379> set k6 v6
OK
  • 生成aof文件
# ls
appendonly.aof redis-benchmark  redis-check-aof  redis-check-rdb  redis-cli  redis-sentinel  redis-server

2、aof修复工具
如果这个 aof 文件有错位,造成 redis无法启动,我们需要修复这个aof文件,redis 给我们提供了一个工具。

redis-check-aof --fix  appendonly.aof

3、优缺点
优点

  • 每一次修改都同步,文件的完整会更加好!
  • 每秒同步一次,可能会丢失一秒的数据
  • 从不同步,效率最高的!
    缺点
  • 相对于数据文件来说,aof远远大于 rdb,修复的速度也比 rdb慢!
  • Aof 运行效率也要比 rdb 慢,所以我们redis默认的配置就是rdb持久化!

4、重写机制
如果 aof 文件大于 64m,会fork一个新的进程来将我们的文件进行重写

参考

https://blog.csdn.net/m0_62218217/article/details/129899051

标签:aof,持久,文件,0.1,Redis,redis,6379,rdb
From: https://www.cnblogs.com/OpenSourceSite/p/18241030

相关文章

  • Redis在微服务架构中的角色:服务间通信与数据共享
    I.引言A.介绍微服务架构的概念和特点 微服务架构是一种设计模式,它将一个大型的单体应用分解成一组小的服务,每个服务都运行在其自身的进程中,独立地进行部署和扩展。这些服务之间通过轻量级的通信机制(如HTTPRESTfulAPI)进行交互,每个服务都围绕一个特定的业务功能进行组......
  • Redis的监控与调优:工具使用和性能提升技巧
    I.引言A.介绍Redis的重要性,以及为什么需要对Redis进行监控和调优 Redis是一种内存数据结构存储系统,它支持多种数据类型,如字符串、列表、集合、哈希表等,并提供了丰富的操作命令。Redis的高性能和灵活性使其在许多场景中都发挥了重要作用,例如,作为缓存降低数据库的访问压......
  • redis-benchmark 基准测试
    我们可以通过redis自带工具redis-benchmark来对redis服务器进行性能测试。我们可以通过简单的redis-benchmark命令直接对本地部署的redis进行性能测试,不用输入任何的参数。默认情况下,redis-benchmark会向redis服务器使用50个并发连接发送共100000个请求。......
  • 运维系列:redis.conf“ E212: 无法打开并写入文件
    redis.conf"E212:无法打开并写入文件redis.conf"E212:无法打开并写入文件Redis配置文件的E212错误解决方法介绍E212错误的原因E212错误表示无法打开并写入文件,这通常是由于以下几个原因造成的:解决方法1.权限问题2.文件不存在3.文件被锁定4.重启Redis服务流程图......
  • Redis 面试热点(一)
    Redis是一个高性能的内存数据库,广泛应用于缓存、会话管理、实时数据分析等场景。掌握Redis的常见问题和高级用法对于面试非常有帮助。本文将介绍5个Redis面试热点,帮助你在面试中脱颖而出。1.Redis数据类型及其应用场景常见数据类型String(字符串):最基本的类型,可......
  • 【Redis】Redis实现高性能的原因
    Redis作为一个单线程的数据库,能够达到高性能的关键在于其设计上的几个方面。以下是Redis快速的几个主要原因:1.内存存储Redis是一个内存数据库,所有数据都存储在内存中。内存的访问速度远远快于磁盘,所以这使得读写操作非常快速。2.简单的数据结构Redis提供了一些基......
  • 【Redis】Redis的数据过期策略有哪些
    Redis提供了多种数据过期策略,用于管理存储在其中的数据的生命周期。数据过期策略决定了何时以及如何删除过期的数据。主要的策略有以下几种:1.定时删除(TimedDeletion)在设置键的过期时间时,Redis会创建一个定时器,当过期时间到达时自动删除该键。这种方法的优点是删除操作......
  • Redis的缓存穿透、击穿、雪崩及解决方案
    Redis的缓存穿透、击穿、雪崩是三个不同的缓存机制问题,在设计和使用Redis缓存系统时,我们需要考虑以下三种常见的问题:缓存穿透、缓存击穿和缓存雪崩。缓存穿透(CachePenetration)定义:缓存穿透:缓存穿透是指查询一个在缓存和数据库中都不存在的数据,用户不断发起这样的请求,由......
  • Redis-0-目录
    0.背景本文,参考B站博主轩辕的编程宇宙-趣话Redis系列进行整理由于最近复习了Redis相关内容,自己整理了笔记,所以刚好结合博主聊到的内容串一下。字幕,借助:GreasyFork中的BilibiliCC字幕工具整理内容段落整合,由GPT完成。1.内容1.1Redis缓存管理机制你好,我是REDIS。一个叫An......
  • Redis-11-Redis与Mysql的数据一致性
    1.是什么数据一致性呢,讲的就是缓存中的数据和db中的数据是否能一致。2.为什么先看我这篇文章,了解下缓存策略:Redis-6-三种缓存读写策略在文章中,介绍了并发场景下的一致性问题,我们已经确定了一个基本思路:先更新db,再删除缓存。这个方案,奠定了我们在读写操作时的基本思路。2.1......