跳过正文
  1. 面试题库/

01|认识 Redis

·1678 字·4 分钟
目录
Redis面试题库 - 这篇文章属于一个选集。
§ 1: 本文

1. 什么是 Redis?
#

分析

Redis 是一个基于内存、支持多种数据结构的存储系统,可以作为数据库、缓存和消息中间件。它支持的数据结构有字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)等,除此之外还支持 bitmaps、hyperloglogs 和地理空间(geospatial)索引半径查询等功能。

它内置了复制(Replication)、Lua 脚本(Lua scripting)、LRU 驱动事件(LRU eviction)、事务(Transactions)和不同级别的磁盘持久化(persistence)功能,并通过 Redis 哨兵(sentinel)和集群(Cluster)保证缓存的高可用性(High availability)。

回答时简洁明了,不用面面俱到。

回答

Redis 是一个开源的内存数据结构存储系统,支持多种数据结构(如字符串、哈希、列表、集合等),常用于缓存、分布式锁。它通过将数据存储在内存中实现高速读写,并支持持久化到磁盘,确保数据安全。Redis 还提供主从复制、事务和 Lua 脚本等功能,适用于高并发场景。

2. 使用 Redis 有哪些好处?
#

分析

使用 Redis 有以下几个显著好处:

  1. 高性能:数据存储在内存中,读写速度极快,适合高并发场景;
  2. 丰富的数据结构:支持字符串、哈希、列表、集合、有序集合等多种数据结构,满足多样化需求;
  3. 持久化:支持 RDB 和 AOF 两种持久化方式,确保数据安全;
  4. 高可用性:通过主从复制和哨兵模式实现故障转移,保障服务连续性;
  5. 分布式:支持集群模式,可水平扩展,处理大规模数据;
  6. 多功能:提供事务、发布订阅、Lua 脚本等功能,增强灵活性;
  7. 广泛应用:适用于缓存、会话存储、消息队列、实时排行榜等场景。

这些优势使 Redis 成为高性能数据存储和缓存的理想选择,回答时选几个点来说就行,高性能和持久化一定要提到。

回答

具有以下好处:

  • 读取速度快,因为数据存在内存中,所以数据获取快;
  • 支持多种数据类型,包括字符串、列表、集合、有序集合、哈希等;
  • 还拥有其他丰富的功能,队列、主从复制、集群、数据持久化等功能。

3. 为什么 MySQL 做存储,Redis 做缓存?
#

分析

使用 Redis 作为 MySQL 的缓存有以下几个主要原因:

  1. 提升性能:Redis 将数据存储在内存中,读写速度远快于基于磁盘的 MySQL,显著减少数据库查询延迟;
  2. 减轻数据库负载:通过缓存频繁访问的数据,减少对 MySQL 的直接查询,降低数据库压力,提高系统整体性能;
  3. 高并发支持:Redis 能处理大量并发请求,适合高流量场景,避免 MySQL 成为瓶颈;
  4. 灵活数据结构:Redis 支持多种数据结构(如字符串、哈希、列表等),便于缓存复杂查询结果或中间数据;
  5. 缓存失效策略:Redis 支持设置缓存过期时间,确保数据及时更新,避免脏数据;
  6. 高可用性:Redis 提供主从复制和持久化功能,确保缓存数据的高可用性和可靠性。

综上,Redis 作为 MySQL 缓存能显著提升系统性能、降低数据库负载,并支持高并发场景。

回答

MySQL 是数据库系统,对于数据的操作需要访问磁盘,而将数据放在 Redis 中,需要访问就可以直接从内存获取,避免磁盘 I/O,提高操作的速度,使用 Redis + MySQL 结合的方式可以有效提高系统 QPS。

4. Redis 常用的业务场景有哪些?
#

分析

主要常用的业务场景有:

  • 对热点数据的缓存:因为 Redis 支持多种数据类型,数据存储在内存中,访问速度快,所以 Redis 很适合用来存储热点数据;
  • 限时类业务的实现:可以使用 expire 命令设置 key 的生存时间,到时间后自动删除 key。例如用在验证码验证、优惠活动等业务场景;
  • 计数器的实现:因为 incrby 命令可以实现原子性的递增,所以可以运用于高并发的秒杀活动、分布式序列号的生成。例如限制一个手机号发多少条短信、一个接口一分钟限制多少请求、一个接口一天限制调用多少次等业务场景;
  • 排行榜的实现:借助 Sorted Set 进行热点数据的排序。例如下单量最多的用户排行榜、最热门的帖子(回复最多)等业务场景;
  • 分布式锁实现:可以利用 Redis 的 setnx 命令进行;
  • 队列机制实现:Redis 提供了 list pushlist pop 这样的命令,所以能够很方便地执行队列操作。

回答

Redis 常用业务场景包括缓存、计数器、分布式锁、排行榜等,其中缓存和分布式锁是最核心和广泛的应用场景。

Redis面试题库 - 这篇文章属于一个选集。
§ 1: 本文