• Redis数据类型:String、List、Set、Sorted Set、Hash
  • Redis淘汰策略
    • 不淘汰数据
    • 任意淘汰数据
    • 最近最少使用的数据淘汰
    • 从已设置过期时间的数据中任意淘汰
    • 从已设置过期时间的数据中,淘汰最近最少使用的数据
    • 从已设置过期时间的数据中,淘汰将要过期的数据
  • 一个字符串类型的值能存储的最大容量?512M
  • Redis集群方案
    • Redis cluster模式(3.0自带集群)
      主从节点,每个节点管理一部分槽,一共分为16384个槽。插入数据时,根据CRC16(KEY) mod 16384的值,决定将key放入哪个槽中。
    • 哨兵模式
    • codis模式
    • 客户端自己分片
  • Redis适合的场景
    • 会话缓存
    • 全页缓存
    • 队列
    • 排行榜/计数器
    • 发布/订阅
  • Redis集群之间是如何复制的?异步复制
  • Redis集群最大的节点数是多少?16384
  • Redis中管道用处?redis可以接收多个请求,然后依次返回所有结果
  • Redis事务
    • 单独隔离
    • 所有命令序列化、按顺序执行
    • 执行过程中,不会被其他客户端发来的命令请求打断
  • Redis事务相关的命令
    • MULTI、EXEC、DISCARD、WATCH
    • MULTI:标识事务开启
    • EXEC:事务结束
    • DISCARD:清除事务
    • WATCH:监听事务
  • Redis key过期时间设置:EXPIRE。永久有效:PERSIST
  • Redis内存优化
    • 尽量使用hash数据结构
    • 减少key的数量
  • Redis分布式锁
    • setnx key val:setnx争抢锁
    • expire key timeout:争到锁后,设置超时时间
    • delete key:删除key
  • Redis异步队列
    • list作为队列,lpush生产消息,rpop消费消息
    • 当rpop没有消息时,适当sleep一会再重试
    • 生产一次消费多次:使用pub/sub订阅模式
  • 缓存穿透
    • 大量的恶意请求故意查询不存在的key,对数据库造成压力
    • 避免
      • 对查询结果为空的数据也进行缓存,缓存时间设置较短
      • 对一定不存在的key进行过滤。
  • 缓存雪崩
    • 缓存服务器重启或者在某个时间段,缓存集中失效
    • 避免
      • 不同的key设置不同的过期时间,热数据缓存时间长一些,冷数据缓存时间短一些,尽量分散缓存过期时间
      • 加锁或者队列来控制读数据库写缓存的线程数量
03-06 16:02