redis两种存储结构aof和rdb

1.redis存储结构的方式

rdb和aof

aof默认关闭,若aof开启,则优先aof

rdb:

1.用于保存和还原redis服务器所有数据库中的所有键值对数据来记录数据库状态不同.

2. 被压缩的二进制文件,由多个部分保存,如redis,不是redis\0,临时文件替换上一次持久化文件(全量)

3.检查所载入文件:rdb文件,rdb文件的开头部分长度是REDIS五个字符.

4.保存用到save选项中任意一个被满足,服务就会自动执行bgsave命令.

5.rdb文件是一个被压缩的二进制

4.rdb文件的生成 redis的命令有两种 :

    1.save : 阻塞redis服务器进程,直到rdb文件创建完毕为止,在此期间,不能处理任何请求的数据

    2.bgsave:派生子线程,主线程继续处理命令请求.

aof:

1.是通过保存所执行的写命令(SET,SADD,RPUSH)来记录数据库的状态下来,(select命令是自动保存下来的)

2. Aof持久化功能的实现可以分为命令追加(append) ,文件写入,文件同步(sync), 三个步骤. 默认关闭(增量) 

3.aof持久化的效率和安全性

  appendfsync:

  alway ,服务器在每个事件的循环都要将aof_buf缓冲区中的内容写入到AOf中,并且同 步aof文件,效率最慢,最安全,即使停机也只会失去一个事件循环中所产生的数据.

everysync: 服务器在每个事件的循环都要将aof_buf缓冲区中的内容写入到AOf文件,并且1秒钟同步一次,如果停机只会失去1秒钟的命令数据.

no: 服务器在每个事件的循环都要将aof_buf缓冲区中的内容写入到AOf文件,但是何时同步数据,由操作系统进行控制

4.aof文件的载入和还原:

    创建一个不带网络的伪客户端,aof命令只能通过客户端上下文中执行,将所有写命令的全部执行,那么数据库就会被还原出来了.

5.aof重写:aof文件因为大量写命令,会造成aof文件体积越来越大,可能会对整个宿主机造成影响,文件越大,还原的数据库的时间就越长.为了解决体积膨胀的问题,提供了aof重写,用新的aof文件来替换旧的aof文件.新的aof文件是通过读取数据库数当前的状态,所以不会有任何冗余命令,同时体积也会小很多.

如果redis_aof_rewrite_items_percmd常量是64,如果集合超过这个数据,那么就会用多个sadd命令记录这个集合,每条命令的元素的数量也会是64个,rpush同理

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容