你的项目的哪些场景使用了 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 的注册主从复制

  • 主从全量同步