AOF文件重写算法
为了解决AOF文件体积膨胀的问题,Redis提供了AOF文件重写功能,新生成一个AOF文件来替代现有的AOF文件,新旧两个文件所保存的数据库状态相同,但新文件不会包含任何冗余命令,所以新AOF文件的体积会比旧的文件小。 redis的重写aof算法非常的聪明。 直接读取key的值,获取最新的key当前的值,然后用一条命令就可以做为这个key的当前状态。 def aof_rewrite(new_aof_file_name): # 创建新的AOF文件 f = create_file(new_aof_file_name) # 遍历数据库 for db in redisServer.db: # 忽略空数据库 if db.is_empty(): continue # 显示指定数据库 f.write_command("SELECT "+ db.id) for key in db: # 忽略已过期的key if key.is_expired(): continue # 根据key的类型对key进行重新 switch(key.type): case String: r....