前言
如果有人问你:“你会把 Redis 用在什么业务场景下?”
我想你大概率会说:“我会把它当作缓存使用,因为它把后端数据库中的数据存储在内存中,然后直接从内存中读取数据,响应速度会非常快。”
没错,这确实是 Redis 的一个普遍使用场景,但是,这里也有一个绝对不能忽略的问题:「一旦服务器宕机,内存中的数据将全部丢失」 。
目前,Redis 的持久化主要有两大机制,即 「AOF(Append Only File)日志和 RDB(Redis DataBase) 快照」 。
AOF
日志是如何实现的
说到日志,我们比较熟悉的是数据库的写前日志(Write Ahead Log, WAL),在实际写数据前,先把修改的数据记到日志文件中,以便故障时进行恢复。不过,AOF 日志正好相反,它是写后日志,"写后"的意思是 Redis 是先执行命令,把数据写入内存,然后才记录日志。

AOF日志是如何实现的
AOF 里记录的是 Redis 收到的每一条命令,这些命令是以文本形式保存的。
我们以 Redis 收到“set testkey testvalue”命令后记录的日志为例,看看 AOF 日志的内容。其中,“*3”表示当前命令有三个部分,每部分都是由“数字开头,后面紧跟着具体的命令、键或值。这里,数字表示这部分中的命令、键或值一共有多少字节。例如,3 set”表示这部分有 3 个字节,也就是“set”命令。

AOF日志是如何实现的

最低0.47元/天 解锁文章
506

被折叠的 条评论
为什么被折叠?



