redis【入门】,RDB和AOF之间的区别
redis概述
Redis 是用 C 语言开发的一个开源的高性能键值对(key-value)数据库,官方提供测试数据,50 个并发执行 10 万个请求,读的速度是 11 万次/s,写的速度是 8 万次/s ,MySQL 在 1000 次/s
redis支持的键值数据类型
- 字符串类型 string
- 散列类型 hash
- 列表类型 list
- 集合类型 set
- 有序集合类型 zset
redis的持久化
Redis 的高性能是由于其将所有数据都存储在了内存中。为了使 Redis 在重启之后仍能保证数据不丢失,需 要将数据从内存中同步到硬盘中,这一过程就是持久化。
- RDB 持久化(Redis DataBase)
- 默认的方式,在指定的时间间隔内将内存中的数据快照写入磁盘
- AOF 持久化(Append Only File)
- 该机制将以日志的形式记录服务器的每一个写操作,在 Redis 服务器启动之初会读取该文件来重新构建数据库,以保证启动后数据库中的数据是完整的。
使用上面一种或将二者结合使用的持久化方式,也可以禁用 Redis 服务器的持久化功能,这样我们就可以将 Redis 视为一个数据库缓存。
RDB持久化机制
优点
- 方便备份与恢复
- 整个 Redis 数据库将只包含一个文件,默认是 dump.rdb,这对于文件备份和恢复而言是非常完美的。因为我 们可以非常轻松的将一个单独的文件压缩后再转移到其它存储介质上。一旦系统出现灾难性故障,我们可以非常 容易的进行恢复。
- 性能最大化
- 对于 Redis 的服务进程而言,在开始持久化时,它唯一需要做的只是分叉出子进程,由子进程完成这些持久 化的工作,这样就可以极大的避免服务进程执行 IO 操作了
- 启动效率更高
- 相比于 AOF 机制,如果数据集很大,RDB 的启动效率会更高
缺点
- 不能完全避免数据丢失
- 因为 RDB 是每隔一段时间写入数据,所以系统一旦在定时持久化之前出现宕机现象,此前没有来得及写入磁 盘的数据都将丢失。
- 会导致服务器暂停的现象
- 由于 RDB 是通过子进程来协助完成数据持久化工作的,因此当数据集较大时,可能会导致整个服务器停止服务几百毫秒,甚至是 1 秒钟。一般在夜深人静的时候持久化会比较好。
RDB持久化的配置
AOF持久化机制
AOF 包含一个格式清晰、易于理解的日志文件用于记录所有的修改操作。也可以通过该文件完成数据的重 建。该机制可以带来更高的数据安全性,即数据持久性。Redis 中提供了 3 中同步策略:每秒同步、每修改同步、不同步。
优点
- 每秒同步:
- 异步完成的,其效率也是非常高的,所差的是一旦系统出现宕机现象,那么这一秒钟之内修改的 数据将会丢失
- 每修改同步
- 即每次发生的数据变化都会被立即记录到磁盘中。这种方式在效率上是最低的。 3) 不同步:性能最高,不写入到文件中
缺点
- 文件比 RDB 更大
- 对于相同数量的数据集而言,AOF 文件通常要大于 RDB 文件
- 运行效率比 RDB 更慢(文件越大,数据恢复越慢)
- 根据同步策略的不同,AOF 在运行效率上往往会慢于 RDB。
AOF持久化的配置