30个常见的Redis面试问题
💡
原文英文,约1100词,阅读约需4分钟。
📝
内容提要
Redis 是一种开源的内存键值存储,功能包括数据库、缓存和消息代理。其特点有内存存储、持久化、数据复制、分片、多数据类型支持、原子操作、发布/订阅和 Lua 脚本。适用于缓存、会话管理和实时分析等场景,支持字符串、列表、集合等数据结构。通过集群和哨兵实现高可用性和故障容错。
🎯
关键要点
- Redis 是一种开源的内存键值存储,可以用作数据库、缓存和消息代理。
- Redis 的主要特点包括内存存储、持久化、数据复制、分片和支持多种数据类型。
- Redis 与传统关系数据库的区别在于其低延迟和支持非关系数据结构。
- Redis 的常见用例包括缓存、会话管理、实时分析和消息队列。
- Redis 支持多种数据结构,如字符串、列表、集合和哈希。
- Redis 键是数据的唯一标识符,支持二进制安全和命名约定。
- Redis 缓存通过使用高性能的内存存储来提高应用程序响应速度。
- 使用 SET 命令可以在 Redis 中设置值,使用 GET 命令可以检索值。
- EXPIRE 命令用于设置键的超时时间,超时后自动删除该键。
- SETEX 命令可以在一个命令中设置键值及其过期时间。
- Redis 的驱逐策略决定了在达到最大内存限制时如何处理内存。
- LRU 驱逐策略会在内存限制达到时驱逐最近最少使用的键。
- FLUSHALL 命令用于清除 Redis 中所有数据库的所有键。
- Redis 提供 RDB 快照和 AOF 日志两种持久化方法。
- Redis 集群是一个分布式实现,自动将数据分片到多个节点。
- 复制是将数据从主节点复制到从节点,而集群则在多个主节点之间分区数据。
- TTL 命令返回设置过期的键的剩余生存时间。
- Redis 的发布/订阅模式允许多个发布者通过频道向多个订阅者发送消息。
- Redis 列表是有序的字符串集合,允许重复元素,而集合是无序的唯一字符串集合。
- 有序集合是与分数关联的唯一元素集合,支持基于分数的范围查询。
- 在 Web 应用中实现 Redis 缓存的常见模式是先检查缓存,再查询数据库。
- Redis 事务通过 MULTI 命令开始,执行一系列命令后用 EXEC 提交。
- Redis 管道允许一次发送多个命令,减少往返时间,提高吞吐量。
- Redis Sentinel 用于管理和监控 Redis 实例,确保高可用性。
- Redis 是单线程执行命令,避免了应用层的并发问题。
- Redis 支持 Lua 脚本以原子方式执行命令序列,适用于需要原子操作的场景。
- mget() 用于一次检索多个键的值,减少多次往返的开销。
- Redis Streams 是用于管理日志数据的数据结构,支持消费者组和消息确认。
- 通过复制、集群和 Sentinel,可以扩展 Redis 以实现高可用性和容错。
➡️