likes
comments
collection
share

被人问到Redis有啥优缺点和它的持久化机制,别懵,看这儿~

作者站长头像
站长
· 阅读数 60

「这是我参与11月更文挑战的第12天,活动详情查看:2021最后一次更文挑战

Redis有哪些优缺点?

  • 优点:

    • 性能极高
    • 支持数据的持久化,对数据的更新采用Copy-on-write技术(写拷贝),可以异步的保存在磁盘上
    • 丰富的数据类型
    • 原子性:多个操作通过MULTI和EXEC指令支持事务
    • 丰富的特性:key过期
    • 支持数据的备份,快速的主从复制
    • 节点集群
  • 缺点:

    • 数据库容量受到物理内存的限制,不能用作海量数据的高性能读写
    • 适合的场景主要局限在较小数据量的高性能操作和运算上

Redis使用单线程模型为什么性能依然很好?

  • 避免了线程切换的资源消耗
  • 单线程不存在资源共享与竞争,不用考虑锁的问题
  • 基于内存的,内存的读写速度非常快
  • 使用非阻塞的IO多路复用机制
  • 数据存储进行了压缩优化
  • 使用了高性能数据结构,如hash、跳表等

Redis持久化机制有哪些?各有什么优缺点?

RDB(Redis DataBase)

定义:数据集快照的方式半持久化模式,记录数据库的所有键值对,在某个时间点将数据写入临时文件,持久化结束后,用这个临时文件替换上次持久化的文件,可恢复数据。

RDB工作简单概述:

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

rdb保存的文件是dump.rdb

  • 优点:
    • 恢复操作简单,容灾性好
    • 性能高,fork子进程进行写操作,主进程继续处理命令
    • 大数据集比AOF的恢复率高
  • 缺点:
    • 数据安全性低,RDB是间隔一段时间进行持久化,若期间redis发生故障,可能发生数据丢失。
    • fork进程的时候,会占用一定的内存空间。

触发机制

  • save的规则满足的情况下,会自动触发rdb规则

  • 执行flushdb命令,也会触发我们的rdb规则

  • 退出redis,也会产生rdb文件!

    • 备份就自动生成一个dump.rdb

如何恢复rdb文件

  • 只需要将rdb文件放在我们redis启动目录同级下就可以,redis启动的时候会自动检查dump.rdb恢复其中的数据!

AOF(Append Only File)

定义:所有的命令记录以redis命令请求协议的格式完全持久化存储,保存为aof文件,恢复的时候就把这个文件全部在执行一遍!

  • 工作流程概述:

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

aof保存的是appendonly.aof文件,默认是不开启的,我们需要手动进行配置!

  • 优点:
    • 数据安全
    • 三种同步策略:
      • 每次修改便会同步,保证文件完整性较好。
      • 每秒都进行一次同步,但是可能丢失这一秒的数据。
      • 从不进行同步,效率最高。
  • 缺点:
    • AOF的持久化文件比RDB大,恢复速度慢
    • aof文件运行也要比rdb慢

Redis过期键的删除策略有哪些?

  • 定时删除:在设置键的同时,创建一个定时器,让定时器在过期时间到达后来执行删除键的操作。
  • 惰性删除:放任过期键不管,每次从键空间中获取键值时,检查键是否过期,如果过期则删除,如果没过期则返回值。
  • 定期删除:每隔一段时间,程序对数据库进行检查,删除里面过期的键。

为什么Redis所有数据放到内存中?

  • 为了达到最快的读写速度将数据都读到内存中,并通过异步的方式将数据写入磁盘,即具有高速读写和数据持久化的特征
  • 如果程序直接与磁盘交互,磁盘IO速度会严重影响Redis的性能
  • 内存的硬件成本降低,使得Redis更受欢迎。
转载自:https://juejin.cn/post/7029622373699551245
评论
请登录