Redis (一) Redis 作为高性能内存数据库在后端开发中占据重要地位无论是缓存、分布式锁还是消息队列都离不开对其核心配置、持久化、事务、发布订阅以及数据淘汰策略的掌握。本文将从redis.conf配置文件入手逐步解析 Redis 持久化、事务、发布订阅、数据删除与淘汰策略覆盖面试高频考点与生产实战要点。一、redis.conf 核心配置详解Redis 配置文件默认名为redis.confWindows 系统为redis.windows.conf存放于安装目录下所有核心行为均可通过此文件配置。1. units 单位配置配置文件开头定义了基础度量单位仅支持 bytes不支持 bit且对大小写不敏感BYTES/Bytes/bytes效果完全一致。2. INCLUDES 包含配置支持通过include指令引入其他.conf配置文件实现配置拆分与复用便于多实例统一管理。3. NETWORK 网络配置网络配置直接决定 Redis 的访问权限与连接特性是生产环境安全配置的核心bind 0.0.0.0绑定服务器所有 IP允许外部设备访问 Redis保护模式默认开启限制外部访问port 6379Redis 默认监听端口可自定义修改超时配置客户端闲置指定时长后关闭连接设为 0 则关闭此功能。4. 日志配置日志级别与输出路径直接影响问题排查效率核心配置如下loglevel notice logfile databases 16 always-show-logo yes日志级别debug开发调试、verbose详细信息、notice生产推荐、warning仅关键错误logfile指定日志文件路径空则输出到控制台databases 16默认数据库数量为 16always-show-logo是否始终显示 Redis 启动 LOGO。5. 持久化规则配置Redis 基于内存存储断电即失持久化可将内存数据落地磁盘默认触发规则save 900 1 save 300 10 save 60 10000 stop-writes-on-bgsave-error yes rdbcompression yes rdbchecksum yes dir ./save 时间 次数规定时间内触发指定次数修改则持久化stop-writes-on-bgsave-error持久化出错是否停止写入rdbcompression是否压缩 RDB 文件rdbchecksum开启 RDB 文件校验dir持久化文件保存目录。6. SECURITY 安全配置默认无密码可通过requirepass设置 Redis 连接密码提升安全性。7. CLIENTS 客户端限制控制 Redis 最大连接数与内存上限避免资源耗尽maxclients 10000 maxmemory bytes maxmemory-policy noevictionmaxclients最大客户端连接数超限则拒绝新连接maxmemoryRedis 最大可用内存maxmemory-policy内存达上限后的淘汰策略。8. AOF 配置AOF 持久化核心配置默认关闭appendonly no appendfilename appendonly.aof appendfsync everysecappendonly是否开启 AOFappendfilenameAOF 文件名appendfsync同步策略分always每次修改同步、everysec每秒同步、no系统自动同步。9. 配置修改方式文件修改直接编辑redis.conf重启后生效命令修改运行时动态调整重启失效# 获取配置 CONFIG GET loglevel # 修改配置 CONFIG SET loglevel notice二、Redis 持久化机制持久化是 Redis 数据安全的核心避免内存数据因宕机丢失提供RDB和AOF两种方案可单独或混合使用。1. 持久化简介Redis 是内存数据库数据默认存于内存持久化即把内存数据写入磁盘。重启时通过持久化文件恢复数据混合持久化下优先使用 AOF 恢复因其数据完整性更高。2. RDB 持久化概念RDBRedis DataBase即快照持久化指定时间间隔内将内存数据集生成快照dump.rdb恢复时直接加载快照文件。工作原理Redis 通过fork创建子进程父进程继续处理客户端请求子进程遍历内存数据序列化写入临时 RDB 文件利用 LinuxCOW写时复制机制父进程修改数据时复制内存页不影响子进程快照完成后替换旧 RDB 文件子进程退出。触发机制满足save配置规则自动触发执行flushall清空数据库触发正常退出 Redis 自动生成。优缺点优点适合大规模数据恢复恢复速度快对性能影响小缺点宕机易丢失最后一次快照后的数据fork 子进程占用内存。3. AOF 持久化概念AOFAppend Only File以日志形式记录所有写命令重启时回放命令重建数据默认关闭。工作原理父进程接收写命令追加到 AOF 缓冲区子进程重写 AOF 文件压缩日志体积重写完成后替换旧文件保证数据连续性。AOF 文件修复AOF 文件损坏时使用工具修复redis-check-aof --fix appendonly.aof优缺点优点数据完整性高每秒同步仅丢失 1 秒数据缺点文件体积大恢复速度慢运行效率低于 RDB。4. 持久化方案选择追求数据安全同时开启 RDBAOF允许少量数据丢失、追求性能仅用 RDB仅用 AOF 不推荐RDB 更适合备份与快速恢复。三、Redis 事务机制Redis 事务与关系型数据库事务不同单命令保证原子性事务不保证原子性核心是批量命令序列化执行。1. 事务核心特性本质一组命令的集合序列化顺序执行无隔离级别概念命令执行前存入队列缓存单个命令失败不影响其他命令执行不支持回滚。2. 事务三大阶段开启事务MULTI命令入队执行事务EXEC或取消事务DISCARD。3. 事务操作示例正常执行MULTI set k1 v1 set k2 v2 get k1 EXEC取消事务MULTI set k1 v1 DISCARD4. 事务错误类型语法错误事务内命令存在语法问题EXEC后所有命令均不执行逻辑错误命令语法正确但执行失败如对字符串自增仅错误命令失败其他命令正常执行。四、Redis 发布订阅发布订阅pub/sub是 Redis 的消息通信模式实现生产者与消费者解耦类似公众号关注机制。1. 核心原理Redis 服务器维护频道字典键为频道名值为订阅客户端链表。发布消息时遍历对应频道的客户端推送消息。2. 核心命令SUBSCRIBE 频道名订阅频道PUBLISH 频道名 消息向频道发布消息PSUBSCRIBE 模式模式匹配订阅PUBSUB channels查看活跃频道。3. 优缺点与应用场景优点实现简单轻量消息通信缺点消费者离线会丢失消息消息积压易导致 Redis 崩溃场景简单聊天室、消息通知复杂场景优先使用 MQ 中间件。五、Redis 数据删除与淘汰策略Redis 内存资源有限需通过删除策略清理过期数据淘汰策略释放内存空间。1. 数据过期状态通过TTL指令查看数据状态正数剩余存活时间-1永久有效-2已过期 / 未定义。2. 过期数据删除策略定时删除原理过期立即删除创建定时器优点节约内存缺点CPU 占用高影响响应性能。惰性删除原理访问数据时判断是否过期过期则删除优点节省 CPU缺点内存占用高长期不访问的数据无法清理。定期删除原理每秒轮询数据库随机抽取 key 检测过期按比例控制删除频率优点平衡 CPU 与内存压力可配置频率。3. 内存淘汰策略内存不足时Redis 主动清理数据分三类易失数据筛选volatile-lru淘汰最近最少使用的过期 keyvolatile-lfu淘汰使用次数最少的过期 keyvolatile-ttl淘汰即将过期的 keyvolatile-random随机淘汰过期 key。全库数据筛选allkeys-lru全库淘汰最少使用 keyallkeys-lfu全库淘汰使用次数最少 keyallkeys-random全库随机淘汰。禁止淘汰noeviction默认策略禁止淘汰写入报错引发 OOM。策略配置maxmemory-policy noeviction六、总结redis.conf是 Redis 行为核心需掌握网络、安全、持久化关键配置持久化优先混合使用RDB 适合备份AOF 保证数据安全Redis 事务不支持原子性与回滚仅实现批量命令序列化发布订阅适用于简单场景复杂业务改用专业 MQ过期删除与内存淘汰需结合业务选择避免内存溢出与数据丢失。