IT评测·应用市场-qidao123.com

标题: 【口试题系列】 Redis 核心口试题(二)&答案 [打印本页]

作者: 缠丝猫    时间: 2025-3-13 22:13
标题: 【口试题系列】 Redis 核心口试题(二)&答案

   本文重要介绍Redis 的口试题,涵盖持久化、集群、缓存策略、事务等方面
  一、持久化机制

1. RDB 与 AOF 的核心区别及适用场景?

答案:
特性RDBAOF存储内容内存快照(二进制文件)写命令日记(文本格式)数据完整性可能丢失末了一次快照后的数据可配置 everysec 包管秒级丢失规复速度快(直接加载二进制文件)慢(需重放所有命令)文件巨细小(压缩)大(未压缩)适用场景定期全量备份,快速规复实时备份,数据完整性要求高 混合持久化(Redis 4.0+):
AOF 重写时会将 RDB 快照写入文件开头,结合两者上风。
2. RDB 快照触发机制有哪些?

答案:

二、集群与高可用

3. Redis Cluster 节点通信机制是什么?

答案:

4. Redis Sentinel 怎样实现故障转移?

答案:
三、缓存策略

5. 缓存穿透、缓存雪崩、缓存击穿的区别与办理方案?

答案:
题目描述办理方案穿透查询不存在的数据,直接打到数据库布隆过滤器、空值缓存(设置短过期时间)雪崩大量缓存同时过期,数据库压力激增随机过期时间、加锁限流、二级缓存击穿热门数据过期刹时,大量请求打到数据库互斥锁(SETNX)、永不过期(异步更新) Java 示例(布隆过滤器):
  1. BloomFilter<String> bloomFilter = BloomFilter.create(
  2.     Funnels.stringFunnel(Charset.defaultCharset()),
  3.     1000000, 0.01); // 100万容量,误差率1%
  4. if (!bloomFilter.mightContain(key)) {
  5.     return null; // 直接返回,避免查数据库
  6. }
复制代码
6. Redis 内存镌汰策略中 LRU 和 LFU 的区别?

答案:

四、事务与并发控制

7. Redis 事务的原子性怎样包管?

答案:
Redis 事务不包管原子性,但通过以下机制提供部门包管:
示例(WATCH 实现 CAS):
  1. jedis.watch("balance");
  2. String balance = jedis.get("balance");
  3. if (Integer.parseInt(balance) >= 100) {
  4.     Transaction tx = jedis.multi();
  5.     tx.decrBy("balance", 100);
  6.     List<Object> result = tx.exec();
  7.     if (result == null) {
  8.         // 数据被修改,重试逻辑
  9.     }
  10. }
  11. jedis.unwatch();
复制代码
8. Redis 怎样实现乐观锁?

答案:

五、实战优化

9. Redis 连接池的配置参数有哪些?

答案:

Java 配置示例(JedisPoolConfig):
  1. JedisPoolConfig config = new JedisPoolConfig();
  2. config.setMaxTotal(100);
  3. config.setMaxIdle(20);
  4. config.setTestOnBorrow(true);
  5. JedisPool jedisPool = new JedisPool(config, "localhost", 6379);
复制代码
10. 怎样监控 Redis 的内存使用情况?

答案:

总结

Redis 的核心计划理念(单线程、内存优先、异步持久化)是明白其高性能的关键。口试中需结合详细场景分析题目,如缓存策略需区分穿透/雪崩/击穿的差别办理方案,集群需掌握节点通信和故障转移原理。发起通过 Redis-cli 实操和源码阅读加深明白。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4