你的项目的哪些场景使用了 redis
如果发生了缓存击穿、穿透、雪崩如何解决
redis 作为缓存, mysql的数据如何与redis进行同步?
-
先介绍业务,看看业务符合什么场景
-
一致性较高场景
- 双写一致
- 读
- 写 | 延迟双删
- 分布式锁
- 读多写少
- 共享锁
- 排它锁
- 读多写少
- 双写一致
-
允许延迟一致
介绍一下你的异步方案
- 允许延时一致的业务,采用异步通知
- MQ消息中间件
- Canal中间件
- 强一致性(Redisson读写锁)
- 共享锁
- 阻塞写操作
- 排它锁
- 阻塞读和写操作
- 共享锁
Redis作为缓存,数据的持久化是怎么做的?
- RDB
- save
- bgsave
- AOF
RDB 的执行原理?
- fork主进程得到子进程
- 子进程共享主进程的内存数据(复制页表)
- copy-on-write
AOF 的执行原理
-
配置项
-
always
-
everysec
-
no
-
重写触发
-
bgrewriteaof
RDB 和 AOF 对比
- 持久化方式
- 数据完整性
- 文件大小
- 宕机恢复速度
- 数据恢复优先级
- 系统资源占用
- 使用场景
redis 的key过期了会立即删除吗
- 惰性删除
- 定期删除
- SLOW(10hz)
- FAST
Redis的过期策略:惰性删除+定期删除 配合使用
Redis 数据淘汰策略
- noeviction
- volatile-ttl
- allkeys-random
- volatile-random
- allkeys-lru
- volatile-lru
- allkeys-lfu
- volatile-lfu
数据库有1000万数据,redis只能缓存20万,如何保证redis中的数据都是热点数据?
使用 allkeys-lru
Redis内存用完了会发生什么?
Redis 实现的分布式锁
分布式锁的使用场景
- 定时任务
- 抢券
Redis 实现分布式锁如何合理控制锁的有效时长
- 根据业务执行时间预估
- 给锁续期
Redisson 实现的分布式锁执行流程
- 加锁 SETNX
- 加锁成功 watchdog续期(releaseTime/3)
- 释放锁 通知 watchdog
Redisson 的锁是否可以重入
- 利用 hash结构 记录线程id和重入次数
- 主从一致性
- 主机挂机,导致两个线程获取同一把锁
- 解决方式:红锁
- 在多个实例上创建锁 (n/2+1) 向下取整
- 缺点
- 实现复杂
- 性能差
- 运维繁琐
- redis 的 AP 思想,可以保证最终一致
- zookeeper 基于 CP,实现强一致性
Redis 的集群有哪些方案,知道吗?
- 主从复制
- 哨兵模式
- 分片集群
说一说 Redis 的注册主从复制
- 主从全量同步