redis面试知识点

1、五种基础数据结构

  • 字符
  • hash 数组+链表
  • set
  • sorted set
  • list

2、集群模式(cluster, Sentinel)

  • cluster:redis3.0主推模式,采用哈希槽分片,优势是易扩容
  • Sentinel:哨兵模式、主备。高可用

3、持久化机制

  • AOF:命令追加,优点:不会丢数据,缺点:恢复比较慢
  • RDB:存储快照,优点:恢复比较快,方便持久化,缺点:可能会丢数据

4、淘汰策略

 在redis.conf 中配置 maxmemory指定redis能使用的最大内存,达到内存最大限制时。redis会根据m- axmemory-policy,来决定具体的行为,淘汰策略:

  • noeviction:不删除策略,达到maxmemory,直接返回错误
  • allkeys-lru:所有key通用,优先删除最少使用的key
  • volatile-lru:只限于设置了expire的部分,优先删除最少使用的key
  • allkeys-random:所有key通用,随即删除一部分
  • volatile-random:只限于设置了expire的部分,随机删除一部分
  • volatile-ttl:只限于设置了expire的部分,优先删除快过期的key

5、过期策略

  • 定期删除:redis每隔100ms就随机抽取一些设置了过期时间的key,检查是否过期,符合则删除
  • 惰性删除:每次get的时候会检查是否过期,过期则删除
     目前redis采用的是定期删除+惰性删除两种策略

6、缓存穿透

 产生原因:请求的数据在缓存中大量不命中。导致请求走数据库
 解决办法:如果参数不合法可以使用BloomFilter拦截;设置一个较短过期时间的空对象到缓存中

7、缓存雪崩

 产生原因:redis挂掉,请求全走数据库,对缓存数据设置了相同的过期时间,导致某段时间内缓存失效,请求全走数据库
 解决办法:过期时间加随机值;事发前:实现redis的高可用,事发中:可以设置本地缓存+限流,事发后:redis持久化恢复

8、缓存与数据库的双写一致性

 先删除缓存,再更新数据库
 先更新数据库,在删除缓存

9、keys 和 scan 命令

 keys时间复杂度为O(n),阻塞
 scan cursor [MATCH pattern] [COUNT count] 时间,非阻塞,游标扫描

10、查看redis的使用

 info命令

10、如何使用redis存放热点key

 解决方案:限定Redis最大占用内存,Redis会根据自身数据淘汰策略,留下热数据到内存

你可能感兴趣的:(redis面试知识点)