Redis
- 数据类型
- 基本5种进阶4种分别是
- 每种数据类型的特性和使用场景
- string
- 内存安全?只读?
- list
- 底层数据结构
- hash
- 底层数据结构
- set
- 底层数据结构
- 有什么问题
- zeset
- 底层数据结构
- 解决了什么问题
- string
- 常用命令
- string
- 新增
- 设置
- 取值
- 删除
- 长度
- 数学运算
- 过期
- 分布式锁
- list
- 插入
- 弹出
- 消息队列
- zset
- hash
- 存储
- 获取
- 批量
- 返回键值
- set
- 加入
- 删除
- 获取
- zeset
- 加入
- 删除
- 获取
- string
- 持久化
- AOF
- 特点/同步/异步?
- 三种写回策略怎么配置
- AOF重写
- RDB
- 特点/同步/异步?
- 写保护中断
- 综合/叫什么/如何操作
- AOF
- 高可用
- 几种模式
- 主从复制有几个阶段?分别干了什么/基于什么协议
- 第一个阶段有什么问题/如何解决
- 第二个阶段利用了什么保持连接
- 第三个阶段一定会发生吗,解决了什么问题,有什么衍生问题
- Redis主从节点时长连接还是短连接?
- 怎么判断 Redis 某个节点是否正常工作?/做了什么
- 主从复制架构中,过期key如何处理?
- Redis 是同步复制还是异步复制?
- Redis 是同步复制还是异步复制?
- 如何应对主从数据不一致?(为什么出现)
- 主从切换如何减少数据丢失?(有哪些)
- 主从如何做到故障自动切换?
- 分布式怎么实现,大致什么模型
- 哨兵
- 用来干什么?
- 如何判定主节点下线/如何投票/什么叫主观下线和客观下线
- 投票结束后干什么,为什么?
- 再之后呢?/leader是干什么的
- 选取新的master需要哪几个阶段
- 故障转移有哪些步骤
- 选出新主
- 通知旧从
- 通知客户
- 旧主降从
- 误判了怎么办?是否造成主从不一致?为什么?/怎么解决?
- 缓存过期删除
- 什么叫缓存命中率,要尽力实现多少
- 实现过期删除的几种方式,redis实现的哪种,为什么?
- 如何控制频率
- 过期key如何持久化
- 如何确定过期时间
- 根据用户体验
- 高并发幂等
- 热点数据过期时间
- 预加载的超短过期时间
- 缓存淘汰策略
- 为什么需要淘汰/内存满了会怎么办
- redis支持哪几种淘汰算法分别怎么实现
- 如何控制业务的redis内存使用量
- 如何实现自定义的淘汰算法(使用什么数据结构和手段)
- 优先级淘汰
- 先淘汰大对象
- 先淘汰小对象
- 低热度优先
- 缓存模式/缓存更新策略
- 哪八种,分别有什么优势,又存在哪些问题
- Cache Aside 先写谁 什么情况下缓存不一致
- Read Through 什么情况下缓存不一致 异步方案
- Write Through 什么情况下缓存不一致 异步方案
- Write Back 大优势 大问题(两个)
- Refresh Ahead 什么情况下缓存不一致,如何解决
- single flight 是否缓存一致 缺点
- 删除缓存 什么情况下缓存不一致/如何让结合Write Through /存在什么问题
- 延迟双删 是否解决缓存不一致/存在什么问题
- 哪八种,分别有什么优势,又存在哪些问题
- 高并发场景下缓存不一致问题
- 不一致的根源/分别如何避免
- 源自并发操作
- 源自部分失败
- 根源1的解决策略
- 缓存模式
- 消息队列
- 分布式锁
- 版本号
- 根源2如何尽力避免
- 多级缓存更新顺序
- 亮点方案:一致性哈希+节点上下线+write back +分布式锁
- 不一致的根源/分别如何避免
- 缓存问题
- 缓存击穿 什么原因 如何解决
- single flight或分布式锁/各有优劣
- 缓存穿透 什么原因 如何解决
- 布隆过滤器或回写特殊值
- 缓存雪崩 什么原因 如何解决
- 过期时间加随机偏移
- 缓存崩溃容错方案
- 双集群护卫备份(崩溃时灰度策略)
- 缓存击穿 什么原因 如何解决
- redis和memcache
- 区别/为什么用redis
- 完全内存
- io多路复用
- epoll/select/poll各自特点,优劣
- epoll数据结构(两个)/调用方式/主动/被动?/为什么知道来数据了
- reactor模式有哪几个内容,epoll属于哪个阶段/这几个内容以什么方式执行调用
- redis完全是多线程嘛?哪里可以改成多线程,大致流程
- 区别/为什么用redis
- redis分布式锁的高可用和高性能
- redis分布式锁是什么
- 等待时间如何设置
- 如何实现等待机制
- 如何判定有没有加锁成功(考虑线程崩溃的情况,uuid是否可以)
- 过期时间和续约机制
- 如何中断业务
- 如何释放锁(考虑可能存在线程崩溃的情况,UUID是否可以)
- 亮点1 RedLock
- 亮点2 缓存模式优化(哪种)
- 亮点3 去分布式锁
- 乐观锁
- 一致性哈希
- 缓存性能拔高
- 一致性哈希+本地缓存+redis/一致性哈希+分布式redis集群+write back
- redis降级本地缓存