蜗牛学苑 Java 智能体学习 Day48|Redis 全知识点思维导图复盘
一、思维导图整体知识结构梳理Redis 介绍Redis 是什么分类非关系型数据库 NoSQL不仅仅是 SQLNoSQL 解决传统关系型数据库痛点NoSQL 产品MongoDB、RedisNoSQL 特点易扩展灵活的数据模型大数据量高性能高可用Redis 定义高性能键值对内存数据库应用场景缓存任务队列网站访问统计数据过期处理分布式集群架构中的 session 分离分布式锁Redis 为什么快运行内存中C 语言开发采用单线程多路 IO 模型内置很多高效的数据类型集合支持管道技术没有多线程上下文切换的性能损耗通用 Key 操作keys *查询所有 keydel key删除指定 keyexists判断 key 是否存在rename重命名 keyexpire设置 key 过期时间ttl查看 key 剩余过期时间type判断 value 数据类型select n切换数据库基本 5 大数据类型string 字符串常用指令set、get、setex、del、incr、decr、append、strlen存储内容字符串、数值特性可修改追加默认从 0 开始有序允许可查找遍历list 列表常用指令lpush、rpush、lpop、rpop、lrange、lindex、llen、lrem、lset、ltrim企业场景消息队列、有序字符串类比 Java MapString,MapString,StringHash 哈希常用指令hset、hget、hmset、hmget、hkeys、hvals、hdel、hexists场景对象存储Set 集合常用指令sadd、smembers、srem、spop、scard、sismember、sinter、sunion、sdiff特性无序元素不重复支持交集、并、差集运算场景点赞、收藏、点踩Zset 有序集合sorted set常用指令zadd、zrange、zrangebyscore、zrem、zcard、zrank、zrevrangebyscore、zincrby、zcount场景排序、实时排行榜高级数据类型BitMap 位图存储优势极大节省内存100 万用户仅占用 125KB示例场景海量用户访问统计核心特性key 不一定存在判定存在不一定有数据布隆过滤器应用场景黑名单存储用户 id爬虫网址判重用户登录统计如何实现方式Guava 单机布隆过滤器实现Java 手写基于 BitSet 分布式布隆过滤器实现Redis 实现布隆过滤器实现缓存问题缓存使用业务热点数据必须放入缓存中推荐本地缓存与分布式缓存相结合优先读取本地缓存本地缓存为主分布式缓存为辅所有缓存有设置过期时间本地缓存过期时间较短本地缓存同时开启容量限制 时间淘汰策略缓存 Key 具备业务含义避免不同业务 key 冲突缓存序列化统一规范缓存键值尽量不超过 20避免并发更新缓存优先删除缓存空数据也要放入缓存防止缓存穿透读逻辑先读缓存缓存失效再查询数据库写逻辑先写入数据库再更新缓存频繁变动的数据尽量不要缓存缓存预热提前加载缓存数据库不存在读库直接打回缓存缓存穿透现象查询数据库不存在的数据产生大量缓存查询解决方案布隆过滤器缓存空值缓存击穿现象大量 key 同一时间失效 或 Redis 宕机大量请求打数据库解决方案给不同 key 设置差异化过期时间、多级缓存本地缓存 本地缓存缓存雪崩现象热点 key 缓存失效瞬间大量并发请求打到数据库解决方案加互斥锁分布式锁缓存穿透和缓存雪崩区别缓存穿透大量不存在 key 失效缓存雪崩单个热点 key 失效Redis 持久化RDBRedis DataBase快照原理内存存储数据生成二进制快照手动命令自动触发配置 save 规则、Redis 关闭关闭 RDB配置 save 备份两次快照之间机会丢失数据原理记录每一条写操作命令AOFAppend only FileAOF 需要手动开启appendfsync重写机制重写触发auto-aof-rewrite-percentage上一次重写比例auto-aof-rewrite-min-size触发重写最小体积重启加载顺序优先加载 AOF 文件无 AOF 则加载 RDBsave同步执行阻塞主线程bgsavefork 子进程异步写入不阻塞主线程锁相关为什么需要加锁内存数据共享于多线程多线程竞争导致数据不一致线程安全问题控制同一时刻只有一个线程执行代码片段锁的分类悲观锁synchronized特点自动获取锁、自动释放锁可重入锁原理获取共享资源监视器其他线程等待执行完毕自动释放实现类ReentrantLock 可重入锁Lock 接口lock ()阻塞获取锁拿不到就等待tryLock (time)尝试获取锁返回 true/falselockInterruptibly可中断锁线程等待时可中断乐观锁分布式锁Redis 实现分布式锁锁条件where id #{id} and version #{version}版本号 version版本不可修改失效可重MySql 基于 InnoDB 实现基本机制三个参数预期值、新值、版本变量原理比较当前值和预期值相等则更新不相等则失败原子操作避免多线程数据不一致CAS 操作制作意图本次复盘梳理 Redis 完整知识体系覆盖基础概念、5 大基础类型、高级类型、缓存三大经典问题、持久化方案以及锁机制。重点区分缓存穿透 / 击穿 / 雪崩掌握 RDB 与 AOF 持久化差异、悲观锁与乐观锁的适用场景为项目实战与面试夯实 Redis 核心考点。当日学习总结今天系统学习 Redis 全套知识点掌握各类数据结构命令与业务落地场景吃透缓存常见问题的成因与解决方案理解 Redis 两种持久化方式的优缺点学习锁的分类、CAS 原理掌握 Redis 分布式锁的实现思路。Redis 作为项目缓存核心组件是后端面试高频考点需要重点记忆各类场景的选型方案。