RDB

RDB 是 Redis 持久化的第一种方式。有两个 Redis 命令可以用于生成 RDB 文件,一个是 SAVE,另一个是 BGSAVE。SAVE 会阻塞 Redis 服务器进程,执行时 Redis 服务器会阻塞所有客户端发送的命令。

redis> SAVE
OK

BGSAVE 会派生出一个子进程执行,执行时仍可继续处理客户端的命令,但会拒绝客户端 SAVE 和 BGSAVE 的命令,延迟 BGREWRITEAOF 命令。

redis> BGSAVE
Background saving started

执行条件

SAVE 命令会阻塞服务器,所以只能手动执行。BGSAVE 可以在不阻塞的情况下执行,所以可以配置 save 选项让服务器每隔一段时间自动执行一次。比如我们可以向服务器提供以下配置:

save 900 1
save 300 10
save 60 10000

那么只要满足以下三个条件中的任意一个即可被执行:

  • 服务器在 900 秒之内对数据库进行了至少 1 次修改。
  • 服务器在 300 秒之内对数据库进行了至少 10 次修改。
  • 服务器在 60 秒之内对数据库进行了至少 10000 次修改。

为了实现这一功能,服务器会维持一个记录距离上次保存之后修改的次数的 dirty 计数器和一个记录上次保存时间的 lastsave 属性。周期操作函数 serverCron 默认每个 100 毫秒就会执行一次,它的其中一项工作就是检查 save 选项设置的条件是否满足ÿ

Redis学习总结(17)——Redis 持久化和过期机制复习相关推荐

  1. Redis持久化与过期机制

    文章目录 Redis持久化与过期机制 1. 持久化机制 1.1 RDB(默认) 1.2 AOF 2. 过期机制 2.1 根据过期策略删除数据 2.2 当内存过大装不下新数据时,将启用淘汰机制 3. 其 ...

  2. StackExchange.Redis学习笔记(二) Redis查询 五种数据类型的应用

    StackExchange.Redis学习笔记(二) Redis查询 五种数据类型的应用 原文: StackExchange.Redis学习笔记(二) Redis查询 五种数据类型的应用 Connec ...

  3. Redis学习、缓存、持久化、哨兵模式

    个人博客欢迎访问 总结不易,如果对你有帮助,请点赞关注支持一下 微信搜索程序dunk,关注公众号,获取博客源码 我写代码是为了更好的表达自我,这是艺术创作,而不单单是为了把事情搞定. -Antirez ...

  4. Redis学习(1)-基本命令与持久化机制

    docker简单安装设置密码并开启持久化 docker run -d --name myredis -p 6379:6379 redis --requirepass "156967" ...

  5. redis 缓存过期默认时间_缓存的必知必会:一文搞懂Redis持久化和过期机制

    本文主要介绍了 Redis 持久化的两种机制:RDB 和 AOF,以及键过期的策略:惰性删除和定期删除,还有 RDB.AOF 和复制功能对过期键的处理. RDB RDB 是 Redis 持久化的第一种 ...

  6. Redis学习篇之数据库实现和过期策略相关

    参考:Redis设计与实现 事先声明:本文为对该书的总结.并参考 https://segmentfault.com/a/1190000016951866 作者:java3y 数据库相关 Redis服务 ...

  7. redis学习(1)之redis基础和配置主从

    redis介绍 redis介绍 为什么会出现redis呢? redis特性 速度快 基于key-value 丰富的功能 简单稳定 支持的语言多 持久化 主从复制 redis应用场景 缓存 排行榜系统 ...

  8. Redis学习之旅--Redis的数据类型你都知道吗?

    Redis学习之旅--数据类型 Redis-Key String(字符串) list(列表) Set(集合) Hash(哈希) Zset(有序集合) geospatial hyperloglog bi ...

  9. Redis学习(一)之redis简介

    文章目录 一.NoSQL 1.什么是NoSQL 2.NoSQL四大分类 二.Redis 1.什么是Redis 2.redis-benchmark 性能测试工具 3.Redis的五大数据类型和三种特殊数 ...

最新文章

  1. 牛客算法周周练2 B Music Problem(DP,抽屉原理,二进制拆分)
  2. gcd(辗转相除法)
  3. Minor【 PHP框架】3.路由、控制器、视图
  4. mysql三范式和反三范式_数据库三范式和反三范式
  5. 怎样在 Markdown 中使程序代码带上行号
  6. 浅谈tomcat中间件的优化【转】
  7. 使用VMware VSphere WebService SDK进行开发 (二)——获取虚拟机cpu的使用情况
  8. qtdesigner设计表格_实例9 利用Qt Designer设计一个对话框
  9. oracle--导出、导入blob类型的字段
  10. android地图方位角_Android获取经纬度、计算距离、方位角
  11. python 3.8.0安卓_Python for Mac v3.8.0 官方最新版
  12. 关闭mysql服务的方法有哪些_MySQL--启动和关闭MySQL服务
  13. 京东私有云建设:挑战与应对之道
  14. 实验二+018+李滨
  15. 通过设置代理解决AndroidStudio无法下载gradle问题
  16. 典型信息化案例点评(2)
  17. Java Apache POI 小记(读取Word通过模板创建PPT)
  18. 行业json数据以及elementui级联格式
  19. OpenStack 虚机异常断电处理
  20. Kibana操作Elasticsearch-Aggregations聚合数据分析

热门文章

  1. 2020各大网站rss订阅源地址_2020-20-18——DJANGO复习
  2. 如何将pdf导出html,如何导出PDF版、导出EXE版、导出HTML离线版?
  3. cmd进入到python安装目录下_在python中安装basemap
  4. python3网络编程传输图片_python实现同一局域网下传输图片
  5. mysql 的标识符_MySQL查询或标识符在Jupyter中太长?
  6. 微型计算机一般只具有定点运算功能对吗,大学计算机基础模拟卷2及答案剖析.doc...
  7. pythonc代码_Python实现C代码统计工具(一)
  8. mysql 逆序排序_将一组乱序的字符进行排序进行升序和逆序输出
  9. C++socket编程(三):3.1 TCP/IP协议特点
  10. java编写一个整钱换零_Java编写钱币转换为大写程序