2020-05-18 05:26:23
以下是30道Redis面试题及答案:
什么是Redis?简述它的优缺点
Redis是Remote Dictionary Server的缩写,本质是Key-Value内存数据库,支持多种数据结构(如String、List、Set等)。
优点:纯内存操作,性能极高(每秒超10万次读写);支持持久化;数据类型丰富;单个Value最大1GB。
缺点:数据库容量受物理内存限制,不适合海量数据存储。
Redis相比memcached有哪些优势
支持更丰富的数据类型(如List、Set、Sorted Set等);
速度更快;
支持数据持久化。
Redis支持哪几种数据类型
String、List、Set、Sorted Set、Hashes。
Redis主要消耗什么物理资源
内存。
Redis的全称是什么
Remote Dictionary Server。
Redis有哪几种数据淘汰策略
noeviction:内存满时拒绝写入命令;
allkeys-lru:回收所有键中最少使用的;
volatile-lru:仅回收过期键中最少使用的;
allkeys-random:随机回收所有键;
volatile-random:随机回收过期键;
volatile-ttl:优先回收过期键中TTL较短的。
Redis官方为什么不提供Windows版本
Linux版本已稳定且用户量大,开发Windows版本可能带来兼容性问题。
一个字符串类型的值能存储最大容量是多少
512MB(实际建议不超过1GB)。
为什么Redis需要把所有数据放到内存中
为实现最快读写速度,通过异步方式持久化到磁盘。若不放在内存中,磁盘I/O会严重影响性能。
Redis集群方案应该怎么做?都有哪些方案
Codis:支持节点数量变化时数据恢复;
Redis Cluster 3.0:基于哈希槽(16384个槽)的分布式方案;
业务代码层实现:通过Hash计算分配Key到不同实例,需处理节点失效、数据震荡等问题。
Redis集群方案什么情况下会导致整个集群不可用
无复制模型时,若某个节点失败导致部分哈希槽(如5501-11000)无主节点,集群将不可用。
MySQL有2000w数据,Redis只存20w数据,如何保证Redis中的数据都是热点数据
通过设置内存淘汰策略(如volatile-lru)自动清理非热点数据。
Redis有哪些适合的场景
会话缓存:提供持久化,避免数据丢失;
全页缓存:重启后仍可快速加载页面;
队列:利用List/Set实现消息队列;
排行榜/计数器:基于Sorted Set的排序操作;
发布/订阅:支持实时消息推送。
Redis支持的Java客户端都有哪些?官方推荐用哪个
Redisson、Jedis、Lettuce等;官方推荐Redisson。
Redis和Redisson有什么关系
Redisson是高级分布式协调Redis客户端,提供分布式Java对象(如Lock、Map等)。
Jedis与Redisson对比有什么优缺点
Jedis:支持全面Redis命令,但需手动处理分布式问题;
Redisson:简化分布式操作,但功能较简单(不支持字符串操作、事务等)。
Redis如何设置密码及验证密码
设置密码:config set requirepass 123456;
验证密码:auth 123456。
说说Redis哈希槽的概念
Redis集群通过16384个哈希槽分配Key,每个Key通过CRC16校验后对16384取模决定存储位置。
Redis集群的主从复制模型是怎样的
每个节点有N-1个副本,确保部分节点失败时集群仍可用。
Redis集群会有写操作丢失吗?为什么
会,因为Redis不保证强一致性,异步复制可能导致主节点失败时未同步到从节点的数据丢失。
Redis集群之间是如何复制的
异步复制。
Redis集群最大节点个数是多少
16384个(哈希槽数量)。
Redis集群如何选择数据库
集群默认使用0号数据库,无法切换。
怎么测试Redis的连通性
使用ping命令,返回PONG表示连通。
Redis中的管道有什么用
管道(Pipelining)允许批量发送命令而无需等待响应,提升吞吐量。
怎么理解Redis事务
隔离性:事务中的命令按顺序执行,不被打断;
原子性:事务中的命令全部执行或全部不执行。
Redis事务相关的命令有哪几个
MULTI(开启事务)、EXEC(执行事务)、DISCARD(取消事务)、WATCH(监听Key)。
Redis key的过期时间和永久有效分别怎么设置
设置过期时间:EXPIRE key seconds;
取消过期时间:PERSIST key。
Redis如何做内存优化
尽可能使用Hashes存储对象,减少内存占用(如将用户信息存入单个Hash而非多个Key)。
Redis回收进程如何工作的
当内存超过maxmemory限制时,根据淘汰策略回收数据;新命令可能导致内存反复达到限制并触发回收。