目录

RDB vs AOF

内存模型


RDB vs AOF

RDB:手动/定时 BGSAVE 生成快照 dump.rdb(占用小、恢复快;可能丢最近几秒)

AOF:把写命令顺序追加到 appendonly.aof,更安全。appendfsync 三种策略:
always:每次写都 fsync(最安全、最慢)
everysec:每秒 fsync(推荐,最多丢 1 秒)
no:由 OS 自己刷盘(性能好、风险高)

恢复顺序(重启加载):若 AOF 开启,则优先用 AOF;否则用 RDB

恢复顺序 = Redis 重启时,先用 AOF 还是 RDB 来恢复数据的优先级

规则 = 如果开启了 AOF,就优先用 AOF 文件;否则用 RDB 文件

重启加载 = 指 Redis 启动时,从磁盘文件把数据重新加载回内存

为什么叫 BGSAVE?
BG = Background(后台)
SAVE = 保存
BGSAVE = 在后台保存快照
区别于 SAVE 命令,它是“前台保存”,会阻塞整个 Redis,几乎没人用

为什么叫 dump.rdb?
dump = 数据转储 / 快照(database dump)
rdb = Redis DataBase(RDB 格式)
dump.rdb = Redis 材料快照文件

RDB 是 Redis 的一种持久化格式,保存内容的“快照档案”

R = Redis

DB = Database

RDB = Redis Database file

AOF 是 Redis 的另一种持久化方式,把所有写操作顺序追加(append)到日志文件里。

A = Append

O = Only

F = File

AOF = Append Only File(只追加文件,不会改写之前的内容)

AOF 的刷盘策略配置项,决定写入操作多久真正同步到磁盘就是appendfsync

append 表明 AOF 日志是追加写入

fsync 表示强制把缓冲区数据刷到磁盘

合起来就是 AOF 文件追加写入时如何执行 fsync

fsync 是 Unix/Linux 架构里的一个 体系调用

强制把文档缓冲区的内容写入磁盘,确保数据真正落盘就是作用

f = file(文件)

sync = synchronize(同步)

合起来就是 file synchronize ,表示文件同步

表达的就是把文件缓冲和磁盘内容同步

内存模型

Redis 是内存数据库,容量靠 maxmemory 控制
淘汰策略(maxmemory-policy):
allkeys-lru(最常见):淘汰最近最少使用的键
volatile-lru:只淘汰带过期时间的键
noeviction:直接报错

Spring Boot 项目里:
缓存层一般会安装 LRU,防止内存爆掉
写业务代码时最好给缓存数据设置 TTL,避免长期占用

内存数据库是啥?

定义:数据主要存放在内存 (RAM) 中,而不是磁盘

特点:

读写速度特别快(源于内存比磁盘快几个数量级)

数据可能会因为重启/掉电丢失,所以需要额外持久化机制(RDB/AOF)

maxmemory 是 Redis 配置里的参数,控制进程最多能使用多少内存

max = 最大值

memory = 内存

最大内存限制就是直译就

allkeys-lru 是一种内存淘汰策略:当内存满时,淘汰所有 key 里最近最少使用的数据

allkeys = 所有 key 都可能被淘汰

LRU = Least Recently Used(最近最少使用)

所以叫 allkeys-lru = 从所有 key 中按 LRU 淘汰

volatile-lru 是另一种淘汰策略,只淘汰带过期时间 (TTL) 的 key,按 LRU 算法挑选

volatile = 易失的、不稳定的(这里指带过期时间的 key)

LRU = 最近最少应用

volatile-lru = 只在带 TTL 的键中用 LRU 淘汰

noeviction = 不淘汰

含义:当内存用完,再有写请求时直接报错(读请求还许可正常执行)

no = 不

eviction = 驱逐、淘汰

noeviction = 不驱逐任何 key

posted on 2025-10-26 11:47  lxjshuju  阅读(0)  评论(0)    收藏  举报