为什么需要持久化?
redis的数据是保存在内存中的,一旦重启那么数据就无了,持久化机制的出现,可以让redis在重启的时候,去恢复数据,这样数据就不会说丢就丢
1:RDB (快照方式) 默认的
2:AOF (命令的方式) AOF如果开启就先用他
下面详细讲一下这俩种持久化方式(不涉及底层)
RDB:以快照的方式进行存储
1:首先RDB的持久化方式是redis默认的持久化方式,如果你又有redis而且没有改过配置文件就可以发现如下配置
我按顺序解读一下
第一个:RDB自动存储的触发条件,例如 save 900 1 意思就是900秒内,只要有一个key发生变化就快照保存
第二个:对于存储到磁盘的快照,是否对快照进行压缩存储
第三个:设置RDB存储快照的文件名,存储的快照就在这里面
第四个:快照文件的保存路径
关于RDB的配置我暂时了解就是这些,以后会根据项目实际情况进行补充
AOF
AOF的方式保存的是命令行,保存了对redis每一次写操作的命令,如果开启了AOF功能,那么Redis就会通过AOF恢复数据
默认配置如下
第一个:是否开启AOF功能
第二个:aof持久化策略的配置
还可以跟RDB一样指定配置文件名和路径
appendfilename 文件名
dir./
重要的就说这几个配置吧,其他的可以看看Redis的配置文件学习
AOF的持久化机制有一个概念叫做 AOF重写
随着命令不断写入AOF,文件会越来越大,为了解决这个问题,Redis引入了AOF重写机制压缩文件体积。AOF文件重
写是将Redis进程内的数据转化为写命令同步到新AOF文件的过程。简单说就是将对同一个数据的若干个条命令执行结果转化成最终结果数据对应的指令进行记录。
比如你对着芙蓉姐姐一通操作之后,我不会关心你中间操作了什么,我只关心芙蓉姐姐现在是什么样子,把现在的样子保存进去就完事了
这俩种方式各有优缺点,据说在大型项目中,是两种配合使用的,配合使用的话,具体会涉及到Redis的主从复制等操作,这个之后有机会再学习,如果路过的各位大佬有相关资源可以告诉我一下,谢谢
虽然说Redis有持久化功能,但是并不完全推荐直接把Redis当数据库用,专业的事情还是交给专业的人做,比如mysql等关系型数据库
在项目中,是用mysql(主)+redis(从) ,具体原因参考大佬文章mysql和redis



