30道Redis面试题,面试官能问的都被我找到了

30道Redis面试题,面试官能问的都被我找到了
最新回答
大众电灯泡!

2020-05-18 05:26:23

以下是30道Redis面试题及答案

  1. 什么是Redis?简述它的优缺点

    Redis是Remote Dictionary Server的缩写,本质是Key-Value内存数据库,支持多种数据结构(如String、List、Set等)。

    优点:纯内存操作,性能极高(每秒超10万次读写);支持持久化;数据类型丰富;单个Value最大1GB。

    缺点:数据库容量受物理内存限制,不适合海量数据存储。

  2. Redis相比memcached有哪些优势

    支持更丰富的数据类型(如List、Set、Sorted Set等);

    速度更快;

    支持数据持久化。

  3. Redis支持哪几种数据类型

    String、List、Set、Sorted Set、Hashes。

  4. Redis主要消耗什么物理资源

    内存

  5. Redis的全称是什么

    Remote Dictionary Server

  6. Redis有哪几种数据淘汰策略

    noeviction:内存满时拒绝写入命令;

    allkeys-lru:回收所有键中最少使用的;

    volatile-lru:仅回收过期键中最少使用的;

    allkeys-random:随机回收所有键;

    volatile-random:随机回收过期键;

    volatile-ttl:优先回收过期键中TTL较短的。

  7. Redis官方为什么不提供Windows版本

    Linux版本已稳定且用户量大,开发Windows版本可能带来兼容性问题。

  8. 一个字符串类型的值能存储最大容量是多少

    512MB(实际建议不超过1GB)。

  9. 为什么Redis需要把所有数据放到内存中

    为实现最快读写速度,通过异步方式持久化到磁盘。若不放在内存中,磁盘I/O会严重影响性能。

  10. Redis集群方案应该怎么做?都有哪些方案

    Codis:支持节点数量变化时数据恢复;

    Redis Cluster 3.0:基于哈希槽(16384个槽)的分布式方案;

    业务代码层实现:通过Hash计算分配Key到不同实例,需处理节点失效、数据震荡等问题。

  11. Redis集群方案什么情况下会导致整个集群不可用

    无复制模型时,若某个节点失败导致部分哈希槽(如5501-11000)无主节点,集群将不可用。

  12. MySQL有2000w数据,Redis只存20w数据,如何保证Redis中的数据都是热点数据

    通过设置内存淘汰策略(如volatile-lru)自动清理非热点数据。

  13. Redis有哪些适合的场景

    会话缓存:提供持久化,避免数据丢失;

    全页缓存:重启后仍可快速加载页面;

    队列:利用List/Set实现消息队列;

    排行榜/计数器:基于Sorted Set的排序操作;

    发布/订阅:支持实时消息推送。

  14. Redis支持的Java客户端都有哪些?官方推荐用哪个

    Redisson、Jedis、Lettuce等;官方推荐Redisson

  15. Redis和Redisson有什么关系

    Redisson是高级分布式协调Redis客户端,提供分布式Java对象(如Lock、Map等)。

  16. Jedis与Redisson对比有什么优缺点

    Jedis:支持全面Redis命令,但需手动处理分布式问题;

    Redisson:简化分布式操作,但功能较简单(不支持字符串操作、事务等)。

  17. Redis如何设置密码及验证密码

    设置密码:config set requirepass 123456;

    验证密码:auth 123456。

  18. 说说Redis哈希槽的概念

    Redis集群通过16384个哈希槽分配Key,每个Key通过CRC16校验后对16384取模决定存储位置。

  19. Redis集群的主从复制模型是怎样的

    每个节点有N-1个副本,确保部分节点失败时集群仍可用。

  20. Redis集群会有写操作丢失吗?为什么

    ,因为Redis不保证强一致性,异步复制可能导致主节点失败时未同步到从节点的数据丢失。

  21. Redis集群之间是如何复制的

    异步复制

  22. Redis集群最大节点个数是多少

    16384个(哈希槽数量)。

  23. Redis集群如何选择数据库

    集群默认使用0号数据库,无法切换。

  24. 怎么测试Redis的连通性

    使用ping命令,返回PONG表示连通。

  25. Redis中的管道有什么用

    管道(Pipelining)允许批量发送命令而无需等待响应,提升吞吐量。

  26. 怎么理解Redis事务

    隔离性:事务中的命令按顺序执行,不被打断;

    原子性:事务中的命令全部执行或全部不执行。

  27. Redis事务相关的命令有哪几个

    MULTI(开启事务)、EXEC(执行事务)、DISCARD(取消事务)、WATCH(监听Key)。

  28. Redis key的过期时间和永久有效分别怎么设置

    设置过期时间:EXPIRE key seconds;

    取消过期时间:PERSIST key。

  29. Redis如何做内存优化

    尽可能使用Hashes存储对象,减少内存占用(如将用户信息存入单个Hash而非多个Key)。

  30. Redis回收进程如何工作的

    当内存超过maxmemory限制时,根据淘汰策略回收数据;新命令可能导致内存反复达到限制并触发回收。