专栏目录
1-Redis架构设计到使用场景-四种部署运行模式(上)
2-Redis架构设计到使用场景-四种部署运行模式(下)
3-Redis架构设计到使用场景-主从集群和分片集群
4-Redis架构设计到使用场景-string、list、set、zset、hash使用场景
4-Redis架构设计到使用场景-Redis数据结构与使用场景
5-Redis架构设计到使用场景-Redis请求执行过程
6-Redis架构设计到使用场景-存储原理-数据类型底层结构
7-Redis架构设计到使用场景-持久化机制、缓存失效策略、缓存命中率
8-Redis架构设计到使用场景-缓存穿透、缓存雪崩、缓存预热、缓存降级
持久化机制**
Redis提供两种持久化方式。
- RDB持久化:将Reids在内存中的数据定时dump到磁盘上的rdb文件
- AOF(Append Only File)持久化:将Redis的操作日志以追加的方式写入文件,通过操作还原数据
RDB持久化,在指定的时间间隔内将内存中的数据集快照写入磁盘,实际操作过程是fork一个子进程,先将数据集写入临时文件,写入成功后,再替换之前的文件,用二进制压缩存储。
AOF持久化,以日志的形式记录服务器所处理的每一个写、删操作,查询操作不会记录,以文本的方式记录。
RDB优点
RDB是紧凑的二进制文件,适合备份,全量复制等场景
RDB恢复数据远快于AOF
RDB缺点
RDB无法实现实时或者秒级持久化
新老版本无法兼容RDB格式
AOF优点
可以更好地保护数据不丢失
appen-only模式写入性能比较高
适合做灾难性的误删除紧急恢复
AOF缺点
对于同一份文件,AOF文件要比RDB快照大
AOF开启后,写的QPS会有所影响,相对于RDB来说写QPS要下降
数据库恢复比较慢,不合适做冷备
对于缓存数据存储敏感的场景,一般通过两种方式配合进行备份。
Redis缓存失效策略
1、定时删除策略
在设置key的过期时间的同时,为该key创建一个定时器,让定时器在key的过期时间来临时,对key进行删除。
- 优点:保证内存尽快释放
- 缺点:若key过多,删除这些key会占用很多CPU时间,而且每个key创建一个定时器,性能影响严重
2、惰性删除策略
key过期的时候不删除,每次从数据库获取key的时候去检查是否过期,若过期,则删除,返回null。
- 优点:CPU时间占用比较少
- 缺点:若key很长时间没有被获取,将不会被删除,可能造成内存泄露
3、定期删除策略
每隔一段时间执行一次删除(在redis.conf配置文件设置,1s刷新的频率)过期key操作。
- 优点:可以控制删除操作的时长和频率,来减少CPU时间占用,可以避免惰性删除时候内存泄漏的问题
- 缺点:对内存友好方面,不如定时策略;对CPU友好方面,不如惰性策略
Redis一般采用:惰性策略和定期策略两个相结合。
缓存命中率
-
命中:可以直接通过缓存获取到需要的数据
-
未命中:无法直接通过缓存获取到想要的数据,需要再次查询数据库或者执行其它的操作
- 原因可能是由于缓存中根本不存在,或者缓存已经过期
命中率越高表示使用缓存作用越好,性能越高(响应时间越短、吞吐量越高),并发能力也越好。利用预加载(预热)、扩容、优化缓存粒度、更新缓存等手段来提高命中率。
专栏目录
1-Redis架构设计到使用场景-四种部署运行模式(上)
2-Redis架构设计到使用场景-四种部署运行模式(下)
3-Redis架构设计到使用场景-主从集群和分片集群
4-Redis架构设计到使用场景-string、list、set、zset、hash使用场景
4-Redis架构设计到使用场景-Redis数据结构与使用场景
5-Redis架构设计到使用场景-Redis请求执行过程
6-Redis架构设计到使用场景-存储原理-数据类型底层结构
7-Redis架构设计到使用场景-持久化机制、缓存失效策略、缓存命中率
8-Redis架构设计到使用场景-缓存穿透、缓存雪崩、缓存预热、缓存降级