如果想redis仅作为纯内存的缓存来用,可禁止RDB和AOF所有的持久化机制
Redis 是内存数据库,其将自己的数据存储在内存中,如果 Redis 发生宕机,且没有进行持久化的,那么Redis 重启后将没有之前的数据。而通过持久化,Redis可以在重启后,快速找回之前的数据,防止大量请求打入数据库。
对于企业级的redis架构来说,持久化是不可减少的
企业级redis集群架构:海量数据、高并发、高可用
如Redis不可用了,要做的事是让Redis尽快变得可用,重启Redis,尽快让它对外提供服务,如果没做数据备份,这时Redis启动了也不可用,因为数据都没了。
有可能大量的请求过来,缓存全部无法命中,在Redis里找不到数据,这时缓存雪崩问题,所有请求,没有在redis命中,就会去mysql数据库这种数据源头中去找,一下子mysql承接高并发,然后就挂了。mysql挂掉,数据也就无法恢复到Redis里面去。Redis的数据从mysql来。。。
如果把Redis的持久化做好,备份和恢复方案做到企业级的程度,即使Redis故障了,也可通过备份数据,快速恢复,一旦恢复立即对外提供服务。
快照(先把数据拷贝出来,做个备份):Mysql Dump 和 Redis RDB
日志(某时某点的日志记录):MySQLBinlog和Hbase HLog和Redis AOF
注:
如果同时用RDB和AOF两种持久化机制,在redis重启时,会用AOF来重新构建数据,因AOF中的数据更加完整
save
bgsave
RDB默认开启 在redis安装文件目录下使用如下命令关闭RDB
config set save ""
修改生成RDB的文件名
设置自动保存的间隔
每隔60s,如果超过1000个key发生了变更,就生成一个新的dump.rdb文件,当前redis内存中完整的数据快照,这个操作也被称之为snapshotting,快照
save
bgsave
两者总结