您的位置:首页 > 数据库 > Redis

redis---简洁描述持久化(rdb与aof)

2020-07-28 15:04 435 查看

  redis之所以快,是因为缓存都在内存中,重启一下电脑,或者程序关闭一下,数据就没了。为了保存数据,所以有了持久化的概念。所谓持久化,就是把数据存到磁盘中,数据库中等。redis是单线程,划重点。

  RDB:

  rdb其实和微信截图差不多,这个时间点,你截到了什么东西,那就是什么东西,在截图的结果中,别人给你发消息,是截不到的。这个也是redis默认的持久化方式。如果你非要问没截到的数据怎么办,那你问问自己写的代码100%没bug?
rdb主要有三种触发方式:
1.save
  这个命令会阻塞redis,redis不会处理其他命令,如果已经有了几十万的数据,那就等炸吧。不会真有人用它吧,存在即合理?
2.bigsave
  也会阻塞,但只在fork阶段,时间非常短。由子进程完成持久化,比较常用。
3.手动触发
  顾名思义,自己去配置文件中修改。save m n表示m秒内n次修改,自动触发bigsave。

  AOF:

  A就是apend的意思,所以它是往文件里一点一点加,实时同步的。每有一个命令,都会保存起来。也是用fork的方式来重写文件。

rdb主要有三种触发方式:
1.always
  每次都会持久化,有一条写一条,完整性好,但是耗性能。
2.everysec
  一秒保存一次,如果redis死了,那就是丢一秒数据。
3.no
  从不同步(就是不用了)。

两者对比
  存在即合理,为什么redis推出两种持久化方式,那就是每个都不是完美的,具体还要看项目综合起来去用。对于rdb来说,有可能会丢数据,但是rdb文件不大,数据恢复比较快。而aof如果设置一秒一保存,最多也就丢一秒的数据,数据保存相对于完整,但是aof文件过于庞大,所以之前aof还出过bug,并没有把数据完全复制过来。一般来说会两个一起用。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: