跳至主要內容
Redis 面试

Redis 面试

Redis 简介

【基础】什么是 Redis?

要点

什么是 Redis?

Redis 是一个开源的、数据存于内存中的 K-V 数据库。由于,Redis 的读写操作都是在内存中完成,因此其读写速度非常快

  • 高性能 - 由于,Redis 的读写操作都是在内存中完成,因此性能极高。
  • 高并发 - Redis 单机 QPS 能达到 10w+,将近是 Mysql 的 10 倍。

Redis 常被用于缓存,消息队列、分布式锁等场景

Redis 有什么功能和特性?

Redis 的功能和特性:

  • Redis 支持多种数据类型。如:String(字符串)、Hash(哈希)、 List (列表)、Set(集合)、Zset(有序集合)、Bitmaps(位图)、HyperLogLog(基数统计)、GEO(地理空间)、Stream(流)。
  • Redis 的读写采用“单线程”模型,因此,其操作天然就具有原子性。需要注意的是,Redis 6.0 后在其网络模块中引入了多线程 I/O 机制。
  • Redis 支持两种持久化策略:RDB 和 AOF。
  • Redis 有多种高可用方案:主从复制模式、哨兵模式、集群模式。
  • Redis 支持很多丰富的特性,如:事务Lua 脚本发布订阅过期删除内存淘汰等等。

图来自 Redis Explained


钝悟...大约 47 分钟数据库KV 数据库redis数据库KV 数据库redis面试
Redis 面试之应用篇

Redis 面试之应用篇

缓存

【中级】如何避免缓存雪崩、缓存击穿、缓存穿透?

要点
  • 缓存击穿:指某个热点数据在缓存中失效,导致大量请求直接访问数据库。此时,由于瞬间的高并发,可能导致数据库崩溃。
  • 缓存穿透:指查询一个不存在的数据,缓存中没有相应的记录,每次请求都会去数据库查询,造成数据库负担加重。
  • 缓存雪崩:指多个缓存数据在同一时间过期,导致大量请求同时访问数据库,从而造成数据库瞬间负载激增。

解决方案

缓存击穿:

  • 使用互斥锁,确保同一时间只有一个请求可以去数据库查询并更新缓存。
  • 热点数据永不过期。

缓存穿透:

  • 使用布隆过滤器,过滤掉不存在的请求,避免直接访问数据库。
  • 对查询结果进行缓存,即使是不存在的数据,也可以缓存一个标识,以减少对数据库的请求。

缓存雪崩:

  • 采用随机过期时间策略,避免多个数据同时过期。
  • 使用双缓存策略,将数据同时存储在两层缓存中,减少数据库直接请求。

钝悟...大约 15 分钟数据库KV 数据库redis数据库KV 数据库redis面试
Redis 面试之数据类型篇

Redis 面试之数据类型篇

Redis 数据类型

【基础】Redis 支持哪些数据类型?

要点
  • Redis 支持五种基本数据类型:String(字符串)、Hash(哈希)、List(列表)、Set(集合)、Zset(有序集合)。
  • 随着 Redis 版本升级,又陆续支持以下数据类型: BitMap(2.2 版新增)、HyperLogLog(2.8 版新增)、GEO(3.2 版新增)、Stream(5.0 版新增)。

扩展What Redis data structures look like


钝悟...大约 19 分钟数据库KV 数据库redis数据库KV 数据库redis面试