Redis持久化与过期机制
文章目录
- Redis持久化与过期机制
- 1. 持久化机制
- 1.1 RDB(默认)
- 1.2 AOF
- 2. 过期机制
- 2.1 根据过期策略删除数据
- 2.2 当内存过大装不下新数据时,将启用淘汰机制
- 3. 其他
- 3.1 Redis快的原因
- 3.2 如何解决缓存穿透、缓存击穿、缓存雪崩?
- 3.3 应该为什么样的数据提前做缓存?
Redis持久化与过期机制
1. 持久化机制
1.1 RDB(默认)
- 机制
- 指定时间内、指定次数写操作 -> 会将内存中的数据写入磁盘(dump.rdb文件)
- 重启Redis将会加载磁盘中已持久化的数据
- 优点:恢复速度快,适用于大多数场景
- 缺点:数据的数据完整性、一致性不高(因为如果内存中的数据写入磁盘之前,程序挂了或者宕机,会导致新的数据没有被持久化)
1.2 AOF
- 机制
- 将每个写操作以日志的方式记录并追加到文件中
- 重启Redis将会读取日志文件进行恢复
- 优点:数据的完整性、一致性更高
- 缺点:日志记录较多,恢复速度慢
2. 过期机制
2.1 根据过期策略删除数据
- 定时删除:内存占用低,CPU消耗高。每100ms进行一次随机抽样(100个key),删除过期的key。如果删除的key超过抽样总数的25%(即25个),那么立即进行下一次抽样检查。
- 惰性删除:内存占用高,CPU消耗低。当key被访问时,才检查key是否过期,如果过期则删除这个key,并返回空。
- 定期删除:定时删除与惰性删除的结合版。如果删除频次较高,转为定时删除,如果删除频次较低,转为惰性删除。
2.2 当内存过大装不下新数据时,将启用淘汰机制
- 一般为了防止Redis占用内存过大,影响整个服务器,会设置其最大内存值,即maxmemory
- 当内存超过maxmemory时,将根据maxmemory_policy释放内存
- noeviction:写入新数据时,直接报错
- allkeys-lru:写入新数据时,删除所有数据中最近最少使用的key
- allkeys-lfu:写入新数据时,删除所有数据中使用频次最少的key
- allkeys-random:写入新数据时,随机删除所有数据中的key
- volatile-lru:写入新数据时,删除设置了过期时间的数据中最近最少使用的key
- volatile-lfu:写入新数据时,删除设置了过期时间的数据中使用频次最少的key
- volatile-random:写入新数据时,随机删除设置了过期时间的数据中的key
- volatile-ttl:写入新数据时,优先删除过期时间较早的key
- 补充
- LRU -> least recently used
- LFU -> least frequently used
3. 其他
3.1 Redis快的原因
3.2 如何解决缓存穿透、缓存击穿、缓存雪崩?
- 缓存穿透 ->
- 布隆过滤器
- 缓存击穿 ->
- 去数据库(例如MySQL)取值时,先在Redis中为该key设置一个占位值,这样后续大量针对该key的请求就不会直接传到后面的数据库
- 二级缓存
- 分布式锁(Redis、Zookeeper)
- 缓存雪崩 ->
- 为Redis生成带过期时间的key时,给一个随机的浮动时间,防止同一时间大量key一起过期
- 另外,内存足够的话,建议将热门数据设置无过期时间
3.3 应该为什么样的数据提前做缓存?
- 这个和具体的业务相关,要根据实际场景来分析
- 提前做好缓存是为了降低后面到来的流量高潮导致的压力
- 注意:这里主要强调提前做缓存,是主动的。内存足够时,建议直接设置无过期或是较长的过期时间。
- 举例(主要是可预测的热点数据)
- 电商中促销活动商品的数据
- 节日相关的商品的数据
- 实时热点文章的数据
- 热搜词相关的商品的数据
- 新上映的电影相关的数据
Redis持久化与过期机制相关推荐
- redis 缓存过期默认时间_缓存的必知必会:一文搞懂Redis持久化和过期机制
本文主要介绍了 Redis 持久化的两种机制:RDB 和 AOF,以及键过期的策略:惰性删除和定期删除,还有 RDB.AOF 和复制功能对过期键的处理. RDB RDB 是 Redis 持久化的第一种 ...
- Redis学习总结(17)——Redis 持久化和过期机制复习
RDB RDB 是 Redis 持久化的第一种方式.有两个 Redis 命令可以用于生成 RDB 文件,一个是 SAVE,另一个是 BGSAVE.SAVE 会阻塞 Redis 服务器进程,执行时 Re ...
- Redis中的自动过期机制
实现需求:处理订单过期自动取消,比如下单30分钟未支付自动更改订单状态 实现方案1: 使用Redis Key自动过期出发事件通知 使用定时任务30分钟后检查 按照每分钟轮训检查 使用Redis Key ...
- Redis自动过期机制之key的过期监听(7)
Redis中的自动过期机制 前言 1.使用Redis Key自动过期机制 2.Springboot整合key过期监听 2.1. 创建表 order_number 2.2核心代码 2.2.1 核心代码 ...
- Redis支持的数据类型以及使用场景,持久化,哨兵机制,缓存击穿,缓存穿透
Redis支持的数据类型以及使用场景,持久化,哨兵机制,缓存击穿,缓存穿透 简单介绍一个redis? redis是内存中的数据结构存储系统,一个key-value类型的非关系型数据库,可持久化的数据库 ...
- Redis的过期机制
本文对Redis的过期机制简单的讲解一下 讲解之前我们先抛出一个问题,我们知道很多时候服务器经常会用到redis作为缓存,有很多数据都是临时缓存一下,可能用过之后很久都不会再用到了(比如暂存sessi ...
- Redis的内存回收机制和数据过期淘汰策略
本文来说下Redis的内存回收机制和数据过期淘汰策略 文章目录 概述 为什么需要内存回收 过期删除策略 定时删除 惰性删除 定期删除 删除策略比对 过期删除策略原理 redisDb结构体定义 expi ...
- 高性能分布式缓存redis(持久化原理 安全策略 过期删除内存淘汰策略 性能压测 高可用 Redis Cluster)
redis redis(持久化原理 安全策略 过期删除&内存淘汰策略 性能压测 高可用 Redis Cluster) 1. 持久化原理 1.1 持久化流程(落盘) 1.2 RDB详解 1.2. ...
- Redis系列之Redis持久化机制
Redis持久化机制 为什么要持久化 如果Redis再次访问时,发现Redis的数据是空的,就会形成缓存穿透.更重要的是,因为Redis的数据是空的,所以客户端想要访问的key都没有,就会造成大量的请 ...
最新文章
- 10.07-Idea的使用
- vue+vuex+leaflet Jest单测踩坑指南
- firefox+android+平板,Firefox模拟手机浏览器(iOS+Android) – UserAgent Switcher使用方法...
- [转]ActiveX控件安全初始化之一:实现ISafeObject接口
- 【渝粤题库】广东开放大学 社会学基础 形成性考核
- 九九乘法表编码以及思路
- 搜狗输入法为什么按空格出字 搜狗输入法按空格出字怎么设置
- 易华录发布蓝光存储新品
- 易懂分布式 | Kademlia算法
- mysql服务器版本手册_MySQL中文参考手册——与MySQL服务器连接
- android 放大镜功能,简单实现Android放大镜效果
- 公众号运营工具推荐大会!这些如果你还没用就out啦!
- 怎么把一个表格拆分成两个表格
- 爱情就像是免杀,连鞋都没脱,就悄无声息的走进了你的心里
- Spring Boot 实现接口幂等性的 4 种方案作者:小小怪下士
- oracle通过什么命令释放锁,oracle检测锁,释放锁
- 通信原理仿真100例 | 多普勒频移的matlab仿真
- 工控机常见问题与解决方法
- vue+openlayers图形交互,实现多边形绘制、编辑和保存
- C++STL标准库学习笔记(一)sort
热门文章
- mysql跳过安全_几年了,作为一个码农终于把MySQL日记看懂了!
- Facebook广告账号主页创建时,其实还有这些小知识!
- 新手tiktok怎么做?海外tiktok怎么赚钱!
- 上海计算机一级flash真题,2011年上海市一级考PS与Flash试卷.docx
- Leetcode每日一题:3.无重复字符的最长子串
- 聊天机器人最难理解的 10 个词汇
- fetch与XHR的区别与优势
- Android权限管理
- 文本获取和搜索引擎中的反馈模型
- configure 查找依赖库_由浅入深:Python 中如何实现自动导入缺失的库?