Redis

关注公众号 jb51net

关闭
首页 > 数据库 > Redis > Redis 配置与优化

Redis 配置与优化完全指南

作者:東雪蓮☆

本文系统讲解Redis作为高性能内存数据库的核心特性,涵盖与关系型数据库对比、安装部署、常用命令、持久化机制(RDB/AOF)、高可用方案及性能优化,重点分析缓存穿透、击穿、雪崩问题的解决方案,助力掌握Redis在高并发场景下的应用与管理,感兴趣的朋友跟随小编一起看看吧

前言

Redis 是目前使用最广泛的高性能内存数据库之一。本文从基础概念到安装部署、常用命令、高可用、持久化机制,再到性能优化,一文带你全面掌握 Redis。

1. 关系型数据库 vs 非关系型数据库

关系型数据库(SQL)

非关系型数据库(NoSQL)

2. Redis 简介

应用示例

3. Redis 安装与部署

/etc/init.d/redis_6379 start|stop|restart|status

4. Redis 常用命令

set key value
get key
exists key
del key
keys pattern
rename oldkey newkey

5. Redis 高可用

6. 持久化机制

6.1 RDB 持久化

① 原理

RDB 是将 Redis 某一时刻的内存数据快照(Snapshot)保存到磁盘的二进制文件 dump.rdb 中。 Redis 通过 fork 一个子进程把内存数据写入临时 RDB 文件,完成后再替换旧文件。

② 触发条件

save 900 1
save 300 10
save 60 10000

③ 执行流程

④ 启动加载

Redis 启动时若开启 AOF 优先加载 AOF,否则加载 RDB 文件。载入期间 Redis 会阻塞直至完成。

⑤ 优缺点

6.2 AOF 持久化

① 原理

AOF(Append Only File)是把 Redis 执行过的写/删除命令按 Redis 协议格式追加到日志文件中。重启时 Redis 重新执行 AOF 文件中的命令恢复数据。查询类命令不会写入 AOF。

② 开启 AOF

默认关闭,需要在 redis.conf 开启:

appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec

③ 执行流程

④ 启动加载

Redis 启动时若 AOF 开启则优先加载 AOF;AOF 文件不存在时才加载 RDB。 若 AOF 文件尾部不完整(如宕机),且 aof-load-truncated yes,则忽略尾部继续启动。

⑤ 优缺点

6.3 对比总结

特性RDBAOF
持久化方式周期性快照逐条命令日志
文件大小
恢复速度
数据安全可能丢几分钟丢失不超过 1 秒(默认)
性能影响

实践建议

7. 性能管理与优化

内存指标与碎片率

查看命令:

redis-cli info memory

优化建议

set session:123 abcdef EX 3600
maxmemory 2gb
maxmemory-policy allkeys-lru

内存淘汰策略

当数据量超过 maxmemory 时,Redis 按策略回收空间:

策略描述
volatile-lru从有 TTL 的 Key 中淘汰最少使用的
volatile-ttl从有 TTL 的 Key 中淘汰最快过期的
volatile-random从有 TTL 的 Key 中随机淘汰
allkeys-lru从所有 Key 中淘汰最少使用的(最常用)
allkeys-random从所有 Key 中随机淘汰
noeviction不淘汰,内存不足时报错

实践建议

8. 常见缓存问题与解决方案

8.1 缓存穿透

现象:请求的 Key 在缓存和数据库都不存在,大量请求直达数据库,造成压力。 原因:恶意攻击或查询不存在数据。

解决方案

8.2 缓存击穿

现象:某个热点 Key 正好过期瞬间,大量请求同时穿透到数据库。 原因:缓存数据过期瞬间并发请求落到 DB。

解决方案

8.3 缓存雪崩

现象:大量缓存同时失效或 Redis 宕机,所有请求涌入数据库。 原因:集中过期、缓存不可用、没有熔断限流。

解决方案

8.4 综合实践建议

结语

掌握 Redis 的 RDB/AOF 持久化原理缓存问题与解决方案,不仅能保证数据安全,也能让你的系统在高并发场景下稳定运行。

到此这篇关于Redis 配置与优化完全指南的文章就介绍到这了,更多相关Redis 配置与优化内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文