一、Redis概述1. Redis是什么RedisRemote Dictionary Server是一个基于内存的键值型数据库特点读写速度快10万 QPS支持持久化支持多种数据结构支持分布式2. Redis为什么快核心原因基于内存操作无磁盘IO瓶颈单线程模型避免线程切换开销IO多路复用提高并发能力数据结构简单高效二、Redis数据结构重点1. String本质动态字符串SDS用途缓存计数器INCR分布式锁常用命令set key valueget keyincr key2. List本质双端链表特点有序可重复用途消息队列常用命令lpush / rpushlpop / rpop3. Hash本质键值对集合用途存储对象用户信息常用命令hsethgethgetall4. Set特点无序不可重复用途去重共同好友常用命令saddsmemberssismember5. ZSet有序集合特点有序按score排序用途排行榜常用命令zaddzrangezscore三、Redis底层数据结构1. SDS简单动态字符串优点记录长度O(1)获取长度防止缓冲区溢出减少内存重分配2. 链表LinkedList双向链表支持快速插入删除3. 哈希表Dict渐进式rehash避免阻塞4. 跳表SkipList用于ZSet支持快速范围查询四、Redis持久化机制重点1. RDB快照原理定期将内存数据保存到磁盘优点文件紧凑恢复快缺点可能丢失数据触发方式save同步bgsave异步2. AOF追加日志原理记录每个写操作优点数据更安全缺点文件大恢复慢3. AOF重写压缩AOF文件只保留最终数据状态4. RDB vs AOF对比项RDBAOF数据安全较低高文件大小小大恢复速度快慢五、Redis线程模型高频面试1. Redis是单线程吗Redis核心是单线程6.0之后网络IO可多线程2. 为什么单线程还快避免锁竞争减少上下文切换IO多路复用3. IO多路复用常见模型selectpollepollLinux作用一个线程处理多个连接六、Redis过期策略1. 设置过期时间expire key secondssetex2. 过期删除策略定时删除到时间立即删除开销大惰性删除访问时删除可能浪费内存定期删除Redis采用定期随机扫描删除七、内存淘汰策略重点当内存满了策略noeviction默认报错allkeys-lru最常用volatile-lruallkeys-randomvolatile-ttl八、Redis事务1. 基本命令multiexecdiscard2. 特点不支持回滚保证命令顺序执行3. watch机制乐观锁key变化则事务失败九、Redis发布订阅1. 模式publishsubscribe2. 特点实时通信不支持持久化十、Redis应用场景必背缓存分布式锁计数器排行榜消息队列会话存储
Redis复习笔记(上)
一、Redis概述1. Redis是什么RedisRemote Dictionary Server是一个基于内存的键值型数据库特点读写速度快10万 QPS支持持久化支持多种数据结构支持分布式2. Redis为什么快核心原因基于内存操作无磁盘IO瓶颈单线程模型避免线程切换开销IO多路复用提高并发能力数据结构简单高效二、Redis数据结构重点1. String本质动态字符串SDS用途缓存计数器INCR分布式锁常用命令set key valueget keyincr key2. List本质双端链表特点有序可重复用途消息队列常用命令lpush / rpushlpop / rpop3. Hash本质键值对集合用途存储对象用户信息常用命令hsethgethgetall4. Set特点无序不可重复用途去重共同好友常用命令saddsmemberssismember5. ZSet有序集合特点有序按score排序用途排行榜常用命令zaddzrangezscore三、Redis底层数据结构1. SDS简单动态字符串优点记录长度O(1)获取长度防止缓冲区溢出减少内存重分配2. 链表LinkedList双向链表支持快速插入删除3. 哈希表Dict渐进式rehash避免阻塞4. 跳表SkipList用于ZSet支持快速范围查询四、Redis持久化机制重点1. RDB快照原理定期将内存数据保存到磁盘优点文件紧凑恢复快缺点可能丢失数据触发方式save同步bgsave异步2. AOF追加日志原理记录每个写操作优点数据更安全缺点文件大恢复慢3. AOF重写压缩AOF文件只保留最终数据状态4. RDB vs AOF对比项RDBAOF数据安全较低高文件大小小大恢复速度快慢五、Redis线程模型高频面试1. Redis是单线程吗Redis核心是单线程6.0之后网络IO可多线程2. 为什么单线程还快避免锁竞争减少上下文切换IO多路复用3. IO多路复用常见模型selectpollepollLinux作用一个线程处理多个连接六、Redis过期策略1. 设置过期时间expire key secondssetex2. 过期删除策略定时删除到时间立即删除开销大惰性删除访问时删除可能浪费内存定期删除Redis采用定期随机扫描删除七、内存淘汰策略重点当内存满了策略noeviction默认报错allkeys-lru最常用volatile-lruallkeys-randomvolatile-ttl八、Redis事务1. 基本命令multiexecdiscard2. 特点不支持回滚保证命令顺序执行3. watch机制乐观锁key变化则事务失败九、Redis发布订阅1. 模式publishsubscribe2. 特点实时通信不支持持久化十、Redis应用场景必背缓存分布式锁计数器排行榜消息队列会话存储