面试官:能说说Redis的持久化机制吗?
Hollis
共 2329字,需浏览 5分钟
·
2022-02-26 12:57
我们先来看这么一段面试场景——
面试官:你们项目缓存技术用到了什么缓存技术?
小帅:Redis
面试官:那么问一下,Redis缓存技术用到的持久化机制是哪一种机制?
小帅:AOF
面试官:好吧,回去等通知吧……
这个问题,不知道你在面试的时候有没有被别人问过,你是怎么回答的?
其实不管你怎么回答都是错的,为什么?请往下看。
大家都知道,Redis是我们互联网公司必用的架构技术,在我们业内称之为高性能缓存数据库,那么既然是缓存,我们的系统、服务器一断电或重启的时候,它的数据一定会丢失,所以,在丢失的这个过程中,在丢失之前,Redis做了一套持久化机制。
1、什么叫持久化机制?
整个Redis数据库将只包含一个文件 dump.rdb,方便持久化 容灾性好,方便备份 性能最大化,fork子进程来完成写操作,让主进程继续处理命令,所以是IO最大化,使用单独的子进程来进行持久化,主进程不会进行任何IO操作,保证了Redis的高性能 相对于数据集大时,比AOF的启动效率更高
数据安全性低。RDB 是间隔一段时间进行持久化,如果持久化之间redis 发生故障,会发生数据丢失,所以这种方式更适合用于数据要求不严谨的场景 由于RDB是通过fork子进程来协助完成数据持久化工作的,因此,如果当数据集较大时,可能会导致整个服务器停止服务几百毫秒,甚至是1秒钟
数据安全,Redis中提供了3种同步策略,即每秒同步、每修改同步和不同步。事实上,每秒同步也是异步完成的,其效率也是非常高的,所差的是一旦系统出现宕机现象,那么这一秒钟之内修改的数据将会丢失,而每修改同步,我们可以将其视为同步持久化,即每次发生的数据变化都会被立即记录到磁盘中 通过append模式写文件,即使中途服务器宕机也不会破坏已经存在的内容,可以通过redis-check-aof工具解决数据一致性问题 AOF机制的rewrite模式。定期对AOF文件进行重写,以达到压缩的目的
AOF 文件比 RDB 文件大,且恢复速度慢 数据集大的时候,比rdb 启动效率低 运行效率没有RDB高
有道无术,术可成;有术无道,止于术
欢迎大家关注Java之道公众号
好文章,我在看❤️
评论