springboot实战电商项目mall4j (https://gitee.com/gz-yami/mall4j)
Redis持久化及内存优化
通过redis的配置文件来进行的一些持久化及内存优化操作,如有错误欢迎指导。
1. 为什么需要持久化
如果将用户数据保存到内存中,在服务器断电或者宕机时则会导致内存数据将清空,导致缓存数据清空。
2. 关于持久化文件使用流程
在我们安装了redis之后,所有的配置都在redis.conf文件中,里面保存了RDB和AOF两种持久化机制的各种配置。
命令:
save: 表示当前数据持久化一次,生成RDB文件。
bgsave: 内存数据在后台持久化一次,生成RDB文件。
命令区别:
save: 当执行save指令时不允许用户继续set操作,陷入阻塞。
bgsave: 当执行bgsave时,表示通知redis需要进行持久化操作了,这时redis会根据用户的使用情况进行持久化,不会陷入阻塞,类似于gc(垃圾回收机制)。
持久化文件使用规则:
当程序正常运行时会生成持久化文件,如果当服务器宕机后重启时,会根据配置文件中指定的持久化文件,进行数据的恢复。
3. RDB模式
3.1 说明:
RDB优势
-
RDB模式是redis默认的持久化策略,文件紧凑,全量备份,非常适合用于进行备份和灾难恢复。
-
生成RDB文件的时候,redis主进程会fork()一个子进程来处理所有保存工作,主进程不需要进行任何磁盘IO操作。
-
RDB 在恢复大数据集时的速度比 AOF 的恢复速度要快。
-
RDB模式每次操作时记录内存数据的快照,持久化文件较小。
RDB问题:
1.耗时,内存消耗,IO性能消耗,将内存中的所有数据转储到硬盘上需要花费一定的时间时间。Bgsave