博主介绍:✌全网粉丝5W+,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验✌
博主作品:《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+MySQL+Vue等前后端分离项目,可以在左边的分类专栏找到更多项目。《Uniapp项目案例》有几个有uniapp教程,企业实战开发。《微服务实战》专栏是本人的实战经验总结,《Spring家族及微服务系列》专注Spring、SpringMVC、SpringBoot、SpringCloud系列、Nacos等源码解读、热门面试题、架构设计等。除此之外还有不少文章等你来细细品味,更多惊喜等着你哦
🍅uniapp微信小程序🍅面试题软考题免费使用,还可以使用微信支付,扫码加群。由于维护成本问题得不到解决,可能将停止线上维护。
🍅文末获取联系🍅精彩专栏推荐订阅👇🏻👇🏻 不然下次找不到哟
Java项目案例《100套》
https://blog.csdn.net/qq_57756904/category_12173599.html
uniapp小程序《100套》https://blog.csdn.net/qq_57756904/category_12173599.html
有需求代码永远写不完,而方法才是破解之道,抖音有实战视频课程,某马某千等培训都是2万左右,甚至广东有本科院校单单一年就得3万4年就12万学费,而且还没有包括吃饭的钱。所以很划算了。另外博客左侧有源码阅读专栏,对于求职有很大帮助,当然对于工作也是有指导意义等。在大城市求职,你面试来回一趟多多少少都在12块左右,而且一般不会一次性就通过,还得面试几家。而如果你对源码以及微服务等有深度认识,这无疑给你的面试添砖加瓦更上一层楼。
最后再送一句:最好是学会了,而不是学废了!!
2
Redis提供两种主要的持久化方式,确保数据在服务器重启后能够恢复。理解这些机制对生产环境的数据安全至关重要。
一、RDB (Redis Database)
1. 核心原理
-
全量快照:在特定时间点将内存中的数据完整保存到磁盘
-
二进制压缩存储:紧凑的单文件格式,默认文件名为
dump.rdb
2. 触发方式
# redis.conf配置示例
save 900 1 # 900秒(15分钟)内至少1个key变化
save 300 10 # 300秒(5分钟)内至少10个key变化
save 60 10000 # 60秒内至少10000个key变化
手动触发命令:
SAVE # 同步保存,阻塞主线程
BGSAVE # 后台异步保存(推荐)
3. 工作流程
4. 优缺点
优势:
-
文件紧凑,恢复速度快
-
最大化Redis性能(保存时父进程不执行I/O)
-
适合灾难恢复
劣势:
-
可能丢失最后一次保存后的数据
-
大数据集时fork可能耗时(尤其在虚拟机上)
二、AOF (Append Only File)
1. 核心原理
-
日志追加:记录所有写操作命令
-
重写机制:定期压缩日志文件大小
2. 配置选项
appendonly yes # 启用AOF
appendfilename "appendonly.aof"
appendfsync everysec # 同步策略:# always: 每个命令同步# everysec: 每秒同步(推荐)# no: 由操作系统决定auto-aof-rewrite-percentage 100 # 比上次重写后增长100%时触发
auto-aof-rewrite-min-size 64mb # AOF文件至少64MB才触发重写
3. AOF重写过程
4. 优缺点
优势:
-
更高数据安全性(最多丢失1秒数据)
-
可读性强的日志格式
-
后台重写不影响服务
劣势:
-
文件通常比RDB大
-
恢复速度较慢
-
AOF fsync可能影响性能
三、混合持久化(Redis 4.0+)
1. 原理
aof-use-rdb-preamble yes # 开启混合模式
文件结构:
[RDB格式的前导数据]
[AOF格式的增量命令]
2. 工作流程
-
执行BGSAVE生成RDB快照
-
后续命令以AOF格式追加
-
重写时生成新的RDB前导+增量AOF
3. 优势
-
快速加载RDB部分
-
保证数据完整性的AOF部分
-
结合两者优点
四、生产环境配置建议
1. 数据安全优先
appendonly yes
appendfsync everysec
aof-use-rdb-preamble yes
save 300 100 # 保留基础RDB备份
2. 性能优先
appendonly no
save 900 1
save 300 10
3. 灾难恢复方案
-
定期将RDB文件备份到异地
crontab -e # 每天备份 0 2 * * * cp /var/lib/redis/dump.rdb /backup/redis/dump-$(date +\%F).rdb
-
启用AOF作为第二保障
-
监控持久化状态:
redis-cli info persistence
五、故障处理技巧
1. AOF文件损坏修复
redis-check-aof --fix appendonly.aof
2. RDB文件检查
redis-check-rdb dump.rdb
3. 禁用持久化的紧急模式
redis-server --save "" --appendonly no
六、性能优化参数
# 提高BGSAVE性能
stop-writes-on-bgsave-error no
rdbcompression yes
rdbchecksum yes# 优化AOF重写
aof-rewrite-incremental-fsync yes
no-appendfsync-on-rewrite yes
七、监控关键指标
-
RDB相关:
-
rdb_last_save_time
:上次成功保存时间戳 -
rdb_changes_since_last_save
:上次保存后的变更数
-
-
AOF相关:
-
aof_current_size
:当前AOF文件大小 -
aof_buffer_length
:AOF缓冲区大小 -
aof_rewrite_in_progress
:是否正在重写
-
-
持久化状态:
-
loading
:是否正在加载持久化文件 -
rdb_last_bgsave_status
:上次BGSAVE状态
-
通过合理配置和监控这些持久化机制,可以在性能和数据安全性之间取得平衡。
3