前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis 设计 --- 持久化存储策略 以及 过期键删除策略

Redis 设计 --- 持久化存储策略 以及 过期键删除策略

原创
作者头像
Arbiter
修改2018-09-03 13:26:03
1K0
修改2018-09-03 13:26:03
举报
文章被收录于专栏:Road

写在前面

上一篇 介绍了 Redis 设计中存在的几种重要的数据结构

本篇主要介绍 Redis 中 过期键删除策略 以及 如何“友好”支持数据持久化存储

过期键删除策略

过期键删除策略 主流的有三种:定时删除 惰性删除 定期删除,redis 采用 惰性删除 与 定期删除两个策略

惰性删除
a.png
a.png

RDB 与 AOF

Redis 对于数据持久化的支持是比较出名的,分为 RDB 和 AOF 两种

RDB

RDB 支持两种运行方式,一种是阻塞式,另外一种是非阻塞式。

非阻塞式

当创建 RDB 文件时,服务会 fork 一个子进程出来,在后台默默运行,不影响父进程继续服务

小知识

操作系统会复制一个与父进程完全相同的子进程,虽说是父子关系,但是在操作系统看来,他们更像兄弟关系,这2个进程共享代码空间,但是数据空间是互相独立的,子进程数据空间中的内容是父进程的完整拷贝,指令指针也完全相同,子进程拥有父进程当前运行到的位置

AOF

AOF文件会保存服务器运行期间所执行的每一条有效的操作指令,以命令追加的形式,保存在持久化文件中,但是随着执行的指令越来越多,AOF 文件的体积将变的越来越可观,于是衍生出了“AOF重写”

AOF 重写

当触发 AOF 重写场景时,服务会 fork 一个子进程出来,在后台默默运行,不影响父进程继续服务;这里与 RDB 原理不同的一点时,在 AOF 重写期间,父进程执行的指令依然会被追加到 AOF 重写文件中

b.png
b.png
RDB 与 AOF 对比

AOF

RDB

频率

每秒同步

900s内至少一次修改/300s内至少10次修改/60s内至少10000次修改

原理

命令追加,客户端运行的指令都会持久化在文件中

保存某个事件点的数据快照

事务的 ACID 性质

原子性、一致性、隔离性、持久性

原子性

事务中的多个事务,要么全部执行,要么一个也不执行。Redis 不支持事务回滚,但是,即使执行了错误的指令,也不会影响已经执行了的指令,而且会按照命令队列继续执行下去,以此保证其原子性。

一致性

数据符合数据库本身的定义和要求,没有包含非法或无效的错误数据。Redis 通过严谨的错误检查(包括但不限于 入队检查 执行前检查)以及简单的设计(无视队列中的无效指令)来保证其一致性。

隔离性

即使有多个事务并发执行,各个事务之间也不会相互影响,无论并行进行还是串行进行,最终的结果将是相同的。Redis 以其单线程的设计,来保证其天然的隔离性。

小知识

数据库隔离级别分为四种: 未提交读、提交读、可重复读、串行读;可能存在的异常场景: 脏读、不可重复读、幻读

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 写在前面
  • 过期键删除策略
    • 惰性删除
    • RDB 与 AOF
      • RDB
        • AOF
          • RDB 与 AOF 对比
          • 事务的 ACID 性质
            • 原子性
              • 一致性
                • 隔离性
                相关产品与服务
                云数据库 Redis
                腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档