前言RedisRemote Dictionary Server是一个开源的高性能键值对存储系统以其卓越的速度、丰富的数据结构和广泛的应用场景而闻名。本大纲旨在为不同阶段的开发者提供一条清晰、系统的 Redis 学习路径涵盖从基础概念到高级应用的完整知识体系。 第一部分Redis 基础入门1.1 Redis 概述与核心特性什么是 Redis内存数据库、NoSQL、键值存储核心特性高性能、支持多种数据结构、持久化、主从复制、高可用与分布式应用场景缓存、会话存储、排行榜、消息队列、实时分析1.2 安装与配置安装方式源码编译、Docker、包管理器apt/yum/brew基础配置redis.conf文件详解端口、绑定地址、持久化策略启动与停止服务启动、命令行客户端连接1.3 基本命令与数据类型通用命令SET,GET,DEL,EXISTS,EXPIRE,KEYS五大核心数据结构String字符串计数器、缓存对象Hash哈希存储对象属性List列表消息队列、最新列表Set集合标签、共同好友Sorted Set有序集合排行榜、延迟队列⚙️ 第二部分核心功能与高级特性2.1 持久化机制RDB快照配置、触发条件、优缺点AOF追加日志配置、重写机制、数据恢复混合持久化RDB AOF 的最佳实践2.2 事务与管道事务Multi/Exec原子性、Watch 命令乐观锁管道Pipeline批量操作、性能提升原理Lua 脚本原子执行、复杂操作封装2.3 发布订阅与 StreamPub/Sub 模式频道订阅、模式订阅、适用场景Stream 类型消息队列、消费者组、消息持久化2.4 内存管理与优化内存淘汰策略LRU、LFU、随机等策略配置内存优化技巧合理使用数据结构、共享对象、编码优化内存分析工具INFO memory,MEMORY USAGE,MEMORY STATS️ 第三部分高可用与分布式架构3.1 主从复制复制原理全量同步、增量同步配置与监控slaveof命令、复制状态查看读写分离架构设计与注意事项3.2 哨兵模式Sentinel哨兵原理监控、通知、自动故障转移部署与配置多哨兵集群、主观下线和客观下线客户端集成故障切换时的客户端处理3.3 集群模式Cluster数据分片哈希槽Hash Slot分配与迁移集群搭建最少节点要求、集群创建命令节点通信Gossip 协议、故障检测与恢复 第四部分运维管理与监控4.1 性能监控与指标关键监控指标QPS、内存使用率、连接数、命中率监控命令INFO,MONITOR,SLOWLOG监控工具Redis-stat、RedisLive、Prometheus Grafana4.2 备份与恢复数据备份策略定时 RDB/AOF 备份、异地容灾恢复演练从备份文件恢复数据灾难恢复预案4.3 安全配置认证密码requirepass配置网络隔离绑定 IP、防火墙规则命令重命名与禁用保护危险命令如FLUSHALL 第五部分客户端与编程实践5.1 主流客户端库JavaJedis、Lettuce、Redisson 对比与选型Pythonredis-py、aioredisGogo-redis、redigoNode.jsioredis、node-redis5.2 最佳实践与常见问题连接池配置大小、超时、健康检查序列化方案JSON、MessagePack、Protobuf缓存穿透、击穿、雪崩原理与解决方案布隆过滤器、互斥锁、随机过期热点 Key发现与处理策略5.3 实战项目集成Spring Boot 集成缓存抽象、Session 管理分布式锁实现Redlock 算法、看门狗机制延迟队列实现基于 Sorted Set 或 StrSpring Boot 集成示例使用 Spring Data Redis Lettuce// 1. 添加依赖 (pom.xml)// lt;dependencygt;// lt;groupIdgt;org.springframework.bootlt;/groupIdgt;// lt;artifactIdgt;spring-boot-starter-data-redislt;/artifactIdgt;// lt;/dependencygt;// 2. 配置连接信息 (application.yml)// spring:// redis:// host: localhost// port: 6379// password: 123456 # 如有密码// lettuce:// pool:// max-active: 8// max-idle: 8// 3. 使用 RedisTemplate 进行缓存操作ServicepublicclassUserService{AutowiredprivateRedisTemplatelt;String,Objectgt;redisTemplate;publicvoidcacheUser(StringuserId,Useruser){// 使用 String 类型缓存用户对象设置过期时间 30 分钟redisTemplate.opsForValue().set(user:userId,user,Duration.ofMinutes(30));}publicUsergetUser(StringuserId){return(User)redisTemplate.opsForValue().get(user:userId);}}// 4. 使用 Cacheable 注解实现声明式缓存RestControllerRequestMapping(/api/users)publicclassUserController{AutowiredprivateUserServiceuserService;GetMapping(/{id})Cacheable(valueusers,key#id)// 自动缓存key 为 users::idpublicUsergetUser(PathVariableStringid){returnuserService.getUserFromDB(id);// 模拟数据库查询}}分布式锁实现示例使用 Redisson// 1. 引入 Redisson 依赖 (pom.xml)// lt;dependencygt;// lt;groupIdgt;org.redissonlt;/groupIdgt;// lt;artifactIdgt;redisson-spring-boot-starterlt;/artifactIdgt;// lt;versiongt;3.27.0lt;/versiongt;// lt;/dependencygt;// 2. 配置 RedissonClient (application.yml 或 Java Config)// redisson:// singleServerConfig:// address: redis://localhost:6379// 3. 使用 RLock 实现分布式锁ServicepublicclassOrderService{AutowiredprivateRedissonClientredissonClient;publicvoidcreateOrder(StringorderId){StringlockKeyorder_lock:orderId;RLocklockredissonClient.getLock(lockKey);try{// 尝试加锁最多等待 10 秒锁持有时间 30 秒看门狗会自动续期booleanisLockedlock.tryLock(10,30,TimeUnit.SECONDS);if(isLocked){try{// 执行业务逻辑例如检查库存、创建订单等System.out.println(获取锁成功处理订单: orderId);// ... 业务代码 ...}finally{// 释放锁lock.unlock();System.out.println(释放锁: lockKey);}}else{System.out.println(获取锁失败订单处理被拒绝: orderId);}}catch(InterruptedExceptione){Thread.currentThread().interrupt();thrownewRuntimeException(获取锁时被中断,e);}}}eam 第六部分进阶与生态扩展6.1 Redis 模块RedisSearch全文搜索功能RedisJSON原生 JSON 支持RedisGraph图数据库功能RedisTimeSeries时序数据处理6.2 云服务与托管云厂商服务AWS ElastiCache、Azure Cache for Redis、阿里云 ApsaraDB自建 vs 托管成本、运维复杂度对比6.3 源码学习与贡献源码结构事件驱动模型、网络通信、数据结构实现调试与测试编译调试环境搭建社区贡献Issue 跟踪、PR 提交流程 第七部分学习资源与路线图7.1 推荐学习资源官方文档redis.io/documentation经典书籍《Redis 设计与实现》、《Redis 开发与运维》在线课程各大平台实战课程社区与博客Redis 官方博客、国内技术社区7.2 学习路线建议初学者1-2周掌握基础命令、五种数据结构、简单应用进阶者1-2月深入持久化、复制、哨兵、集群、性能优化专家级3-6月源码研究、大规模集群运维、定制化开发7.3 认证与职业发展Redis 认证Redis University 课程与认证岗位技能要求后端开发、数据库管理员、架构师持续学习关注新版本特性、参与社区讨论最后更新本大纲将持续更新以反映 Redis 最新版本如 Redis 7.x的特性和最佳实践。建议结合官方文档和实际项目进行学习实践出真知。