Redis 的常见面试问题:
-
什么是Redis?
Redis(Remote Dictionary Server) 是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
-
为什么选择使用Redis,它具有哪些优点和缺点?
优点:
- 性能高:Redis 能读的QPS是11万次/s, 写的QPS是81万次/s。
- 丰富的数据类型:Redis 支持五种数据类型,包括String(字符串)、Hash(哈希)、List(列表)、Set(集合)、Sorted Set(有序集合)。
- 操作都是原子性的:保证了在并发环境中同一资源的一致性。
- 支持持久化:可以将内存中的数据保存在磁盘中,重启后可再次使用。
缺点:
- 数据库容量受限于物理内存的大小。
- 在大量数据的读写压力下,Redis可能会出现瞬间的延迟。
-
Redis的数据类型及其应用场景?
Redis 支持以下五种数据类型:
- String(字符串)
- Hash(哈希)
- List(列表)
- Set(集合)
- Sorted Set(有序集合)
它们的应用场景非常广泛,比如List可以用来实现队列、堆栈,Set用于存储无序集合,Sorted Set用于排行榜等。
-
什么是Redis的持久化?
Redis的数据默认是存在内存中的,如果不进行持久化操作,那么在服务器断电后,数据就会丢失。而Redis的持久化就是指将当前内存中的数据状态写入磁盘或者记录操作日志。
-
请解释Redis的事务机制。
Redis的事务可以一次执行多个命令, 并且采用先入队,再一起执行的方式进行。如果某个命令在执行过程中失败了,Redis依然会继续执行余下的命令,而不会回滚。
-
谈谈你对Redis的主从复制模式的理解。
主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点,后者称为从节点。数据的复制是单向的,只能由主节点到从节点。主从复制的主要功能是数据备份和负载均衡。
-
如何解决Redis的并发竞争Key问题?
可以通过"分布式锁"和"乐观锁"来解决此问题。 其中,Redis的
SETNX或者RedLock算法可以产生分布式锁,而 WATCH 命令可以产生乐观锁。 -
你是怎样使用Redis的发布订阅功能的?
Redis的发布订阅(pub/sub)是一种消息通信模式,发送者(pub)发送消息,订阅者(sub)接收消息。Redis客户端可以订阅任意数量的频道。