这是我参与2022首次更文挑战的第25天,活动详情查看:2022首次更文挑战」
前言
之前的需求里用到过redis做登录信息的统计,只是很简单地存入sql语句,定期把sql取出来在数据库手动执行,来实现登录统计的功能。因为当时这个需求只是现场提出来的让开发进行支持的小功能,所以并没有做需求分析技术分析等等,因此对redis的理解也很浅显,今天就再往深处学一些,参考了文章,更深入的知识大家可以去看。
Redis持久化
为什么需要持久化
因为redis是基于内存的数据库,一旦服务宕机,内存中的数据将全部消失,通常的解决方案是从后端数据库恢复这些数据,但是会涉及到性能问题,所以redis实现数据的持久化很有必要。
持久化方式
目前官方文档上能看到的对redis持久化支持的方法主要是RDB和AOF,接下来具体理解一下这两种持久化方法的要点。
RDB持久化
Redis DataBase,中文为快照/内存快照,这种方法就是把当前数据生成快照保存在磁盘上的过程(由于是某一时刻的快照,所以快照中的值会早于或者等于内存中的值)。它的触发可以手动也可以自动。
手动触发的命令有:save(阻塞当前redis服务器,直到RDB过程完成为止)和bgsave(Redis进程执行fork操作创建子进程,RDB持久化过程由子进程负责,完成后自动结束)
自动触发的情况有:redis.conf中配置save m n (即在m秒内有n次修改时自动触发bgsave生成rdb文件);主从复制时从节点要从主节点进行全量复制时也会触发bgsave操作,生成当时的快照发送到从节点;执行 debug reload命令重新加载redis时也会触发bgsave操作;默认情况下执行shutdown命令时,如果没有开启aof持久化,那么也会触发bgsave操作;
综述
接下来要结合实际问题来进一步理解了,明天继续~