Redis复习

51 阅读1分钟

过期时间

setex key second value

互斥

nx

为什么redis快

  1. 基于内存存储实现
  2. 高效的数据结构
  3. 合理的数据编码
  4. 合理的线程模型
  5. 虚拟内存机制

缓存击穿 穿透 雪崩

缓存穿透: 查询一个一定不存在的数据

解决:

  • api对参数进行校验
  • 缓存一个空值
  • 布隆过滤器

缓存雪崩: 数据大批量过期

解决: 随机过期时间

缓存击穿: 热点key在某个时间点过期

解决: 过期时间

redis的过期策略

定时过期

惰性过期

定期过期

redis采用的是惰性过期和定期过期

redis8种内存淘汰策略

redis的应用场景

  • 缓存
  • 排行榜
  • 计数器应用
  • 共享session
  • 分布式锁
  • 社交网络
  • 消息队列
  • 位操作

redis的持久化机制

RDB(redis database): 默认,把内存数据以快照的形式保存到磁盘,适合大规模的数据恢复场景,备份

AOF(append only file): 采用日志的形式来记录写操作

怎么实现redis的高可用

3种部署模式: * 主从模式, 哨兵模式, 集群模式*

主从模式: 全量复制,增量复制

哨兵模式: 主服务宕机, 自动切换子服务

mysql和redis如何保证双写一致性

  • 缓存延时双删
  • 删除缓存重试机制
  • 读取biglog异步删除缓存

redisson分布式锁

setnx setex 加锁,加过期时间

setnx的不足:

  1. 不可重入: 同一个线程无法多次获取同一把锁
  2. 不可重试: 获取锁只尝试一次就返回false,没有重试机制
  3. 超时释放
  4. 主从一致

redisson的watchdog?