前言

最近学习Redis6.x,特做笔记以备忘,与大家共学。课程是从私塾在线下载的,他们把架构师课程都放进去了,大家能够去下载学习,不要钱的,地址是http://t.hk.uy/eK7,课程很不错,值得学习!要害是不要钱,嘻嘻!

Redis长久化概述

Redis长久化分成三种形式:RDB(Redis DataBase)、AOF(Append Only File)和AOF+RDB混合长久化

对于Redis长久化,有这么一些说法:

1:RDB是在不同的工夫点,将Redis某一时刻的数据生成快照并存储到磁盘上

2:AOF是只容许追加不容许改写的文件,是将Redis执行过的所有写指令记录下来,在下次Redis重新启动时,只有把这些写指令从前到后再反复执行一遍,就能够实现数据恢复了

3:混合形式是先应用RDB进行快照存储,而后应用AOF长久化记录所有的写操作

4:RDB和AOF两种形式能够同时应用,在这种状况下,如果Redis重启的话,则会优先采纳AOF形式来进行数据恢复,这是因为AOF形式的数据恢复残缺度更高

5:能够敞开RDB和AOF,这样的话,Redis将变成一个纯内存数据库,就像Memcache一样

6:通过配置redis.conf中的appendonly为yes就能够关上AOF性能

7:通过 aof-use-rdb-preamble 配置项能够关上混合形式

RDB形式概述

RDB形式,Redis会独自创立(fork)一个子过程来进行长久化,会先将数据写入到一个临时文件中,待长久化过程都完结了,再用这个临时文件替换上次长久化好的文件。整个过程中,主过程是不进行任何IO操作的,这就确保了极高的性能

如果须要进行大规模数据的复原,且对于数据恢复的完整性不是十分敏感,那RDB形式要比AOF形式更加的高效。RDB的毛病是最初一次长久化后的数据可能失落。

RDB的配置

1:save :保留快照的频率,第一个示意多长时间,单位是秒,第二个示意至多执行写操作的次数;在肯定工夫内至多执行肯定数量的写操作时,就主动保留快照;可设置多个条件。

(1)如果想禁用RDB长久化的策略,只有不设置任何save指令,或者给save传入一个空字符串参数也能够

(2)如果用户开启了RDB快照性能,那么在Redis长久化数据到磁盘时如果呈现失败,默认状况下,Redis会进行承受所有的写申请。这样做的益处在于能够让用户很明确的晓得内存中的数据和磁盘上的数据曾经存在不统一了。如果下一次RDB长久化胜利,redis会主动复原承受写申请。

2:dbfilename:数据快照文件名(只是文件名,不包含目录),默认dump.rdb

3:dir:数据快照的保留目录(这个是目录),默认是以后门路

4:stop-writes-on-bgsave-error:如果配置成no,示意你不在乎数据不统一或者有其余的伎俩发现和管制这种不统一,那么在快照写入失败时,也能确保redis持续承受新的写申请

5:rdbcompression:对于存储到磁盘中的快照,能够设置是否进行压缩存储。如果是的话,redis会采纳LZF算法进行压缩。如果你不想耗费CPU来进行压缩的话,能够设置为敞开此性能

6:rdbchecksum:在存储快照后,还能够让redis应用CRC64算法来进行数据校验,然而这样做会减少大概10%的性能耗费,如果心愿获取到最大的性能晋升,能够敞开此性能

7:rdb-del-sync-files:在没有持久性的状况下删除复制中应用的RDB文件启用。默认状况下,此选项是禁用的。

RDB长处

    适宜冷备份、高性能、复原数据快

RDB的问题

1:fork一个过程时,内存的数据也被复制了,即内存会是原来的两倍

2:每次快照长久化都是将内存数据残缺写入到磁盘一次,并不是增量的只同步脏数据。如果数据量大的话,而且写操作比拟多,必然会引起大量的磁盘io操作,可能会重大影响性能。

3:因为快照形式是在肯定间隔时间做一次的,所以如果redis意外down掉的话,就会失落最初一次快照后的所有批改。

触发快照的状况

1:依据配置规定进行主动快照2:用户执行save或bgsave命令3:执行flushall命令4:执行复制replication时

save命令

执行Save命令时,Redis会阻塞所有客户端的申请,而后同步进行快照操作。

bgsave命令

执行bgsave命令时,Redis会在后盾异步进行快照操作,快照同时还能够响应客户端申请。能够通过lastsave命令获取最初一次胜利执行快照的工夫。

flushall命令

这个命令会导致Redis革除内存中的所有数据,如果定义了主动快照的条件,那么无论是否满足条件,都会进行一次快照操作;如果没有定义主动快照的条件,那么不会进行快照

后记

我会继续的把我学习Redis6.x过程的笔记记录下来,跟大家一起学习。心愿能坚持下去!