Redis——持久化:RDB(快照)/AOF(写命令)

一、持久化:

  1)Redis之所以速度非常快,原因redis的读写操作都是在内存中进行的;

  2)内存中读写完成后必然要存入到磁盘中,rdb和aof就是持久化的两种模式;

二、RDB快照:

  1)RDB就是将某一时刻的快照保存到磁盘中,即数据被保存下来;

  2)可以在redis.conf中配置快照保存的频率,redis会自动保存快照;

    

    900秒:变化1个即保存;

    300秒:变化10个即保存;

    60秒:变化10000个即保存;

  3)隐患:

    因为快照是根据时间点来保存的,如果时间点还未到,但服务器崩溃了,则崩溃时间到上个时间点的数据都丢失了;

  4)docker中启动:

    //挂一个数据卷在外面;

docker run -v /usr/local/docker/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf -v /usr/local/docker/redis/conf/data:/data --name myredis -p 6379:6379 redis redis-server /usr/local/etc/redis/redis.conf

三、AOF(写命令):

  1)AOF是将所有的读写操作以日志的方式保存到一个aof文件中,根据命令时间数据的恢复;

  2)redis.conf配置:

    

      

    

    说明:

    (1)appendfilename:AOF 文件名称

    (2)appendfsync:同步频率

      always:每一条指令都立即生成日志,性能低;

      everysec:每秒生成一次,性能好;

    (3)appendonly:是否打开 AOF 持久化功能

   3)AOF重写:

    (1)当aof文件过大时,会执行重写;如set key 1,incr key 100次,会被重写为set key 100;

    (2)redis.conf配置:

      

      auto-aof-rewrite-percentage 100:超过最小体积,本次重写体积为100%,则为两倍;

      auto-aof-rewrite-min-size 64mb:最小重写体积;

  4)使用:

    配置开启后挂一个数据卷:

docker run -v /usr/local/docker/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf -v /usr/local/docker/redis/conf/data:/data --name myredis -p 6379:6379 redis redis-server /usr/local/etc/redis/redis.conf

三、两种方式选择:

   两种都用!!

  RDB 快照方便数据恢复; AOF有bug;

猜你喜欢

转载自www.cnblogs.com/Tractors/p/11287911.html