Redis 数据结构

68 阅读2分钟

五种基础数据结构

  • String,存储简单字符

    • 标志位
    • 分布式锁
    • 存储优惠卷剩余数量
  • List

    • 关注列表,粉丝列表
    • redis 实现轻量级消息队列使用list
  • Hash

    • 类似HashMap
    • 存储多key的消息,比如某个地区下面的活动信息,活动信息包含多个属性
  • Set

    • 黑名单
    • 白名单
    • 提高交集操作
  • Sorted Set

    • 排行榜

高级数据结构

  • bitmap
  • hyperlog
  • geo

拓展

数据库与缓存读写一致性怎么保证?


  1. 更新数据库同时更新缓存,适合并发不高场景
  2. 先删除缓存再更新数据,再删除缓存
  3. 通过消息更新缓存,先更新数据
  4. 通过canal 等消息同步的方式保证数据一致

数据删除策略

  • noevication:当数据满了的时候,不再支持写操作。 默认
  • allkeys-lru:所有的key 里面找最近最少未使用的
  • allkeys-random:随机删key
  • volatile-lru:在设置了过期时间的key 里面用lru算法找
  • volatile-random:设置了过期时间的里面随机找
  • volatile-ttl:找快过期的

缓存穿透、缓存击穿、缓存雪崩

穿透:数据库和缓存中都没有,然后一直攻击数据库

击穿:数据库中有、缓存中没有,给数据库增加压力

雪崩:缓存中大量key 过期,导致数据库服务遭受海量压力

解决:key 不过期,保证缓存和数据库双写机制

避免大key,避免大key 过期

SET 三剑客

  • set key value
  • setnx key value
  • setex key seconds value

什么是 I/O 多路复用?

Redis 线程模式是什么?什么是Reactor 模型?

什么是Redis 事务机制?

如何使用Redis 实现简易消息队列?

Redis 集群?

  • 使用hash slot 去进行分片,redis 总把数据分为16384 个slot,对key 进行CRC 计算实现分片,降低数据redis 服务器压力
  • 如何扩容

布隆过滤器实验?