# 1. Redisson 分布式锁在锁超时与 GC 停顿下的安全性 A 看门狗能完全消除 GC 停顿导致的锁过度释放 B 看门狗只在加锁时执行一次,运行期不续期 C 看门狗后台自动续期,缓解业务执行超时锁被提前释放的问题 ✓ 正确答案 D 看门狗与锁超时无关,只用于网络保活
# 2. Redisson 客户端连接池与 Netty 线程模型 A Redisson 每个命令都阻塞一个业务线程,不支持异步 B 连接池越大越好,无需考虑资源消耗 C Netty 线程只负责序列化,不负责网络 IO D Redisson 基于 Netty 事件循环异步处理命令,连接池管理节点连接 ✓ 正确答案
# 3. Redisson 的 Lua 脚本原子性,EVAL 保证复合操作原子,集群模式下多 key 的 slot 限制 A Lua 脚本在集群下可以自由操作任意多个 key B Lua 脚本保证复合操作原子执行,集群下多 key 脚本需通过 hash tag 落在同一 slot ✓ 正确答案 C EVAL 脚本不保证原子性,可能被其他命令打断 D 集群模式下 Lua 脚本无需考虑 slot 限制
# 4. Redisson 的 RLock 可重入分布式锁与看门狗续期 A 可重入即同一线程可无限加锁,无需计数 B 显式指定 leaseTime 后看门狗仍会无限续期 C RLock 通过持有者哈希与计数实现可重入,看门狗定期续期避免锁超时释放 ✓ 正确答案 D 看门狗只在加锁时启动一次,运行期停用
# 5. Redisson 的 RTopic 发布订阅与可靠消息边界(消息持久化/ACK/重投) A RTopic 消息会持久化,断线后自动补投 B RTopic 基于 Pub/Sub,消息不持久化、无 ACK,订阅者不在线会丢失 ✓ 正确答案 C RTopic 支持 ACK 与重投机制,保证可靠投递 D RTopic 与 Redis Stream 语义完全相同
# 6. Redisson 的分布式锁/信号量/队列,底层 Lua 脚本与看门狗续期如何实现? A 只有锁用 Lua,信号量与队列不用 B 锁、信号量、队列等复合操作都通过 Lua 脚本原子执行 ✓ 正确答案 C Lua 脚本不保证原子性,可能被并发打断 D 看门狗作用于所有分布式对象,包括信号量
# 7. RTopic 的 addListener/publish 模式与 Redis Pub/Sub 的 fire-and-forget 语义差异 A RTopic 只是 Pub/Sub 的 Java 封装,不改变 fire-and-forget 的不可靠语义 ✓ 正确答案 B RTopic 的 addListener 会持久化离线消息 C RTopic 增加了持久化与 ACK,消息可靠投递 D RTopic 与原生 Pub/Sub 完全无关
# 8. Redisson 的 RMap、RBucket 分布式对象与本地缓存 A RMap 是分布式哈希,可配合本地缓存提升读性能但引入短暂不一致 ✓ 正确答案 B RMapCache 不支持 TTL 与淘汰 C RBucket 用于存储多个字段,对应 Redis Hash D 本地缓存与 Redis 数据完全一致,无差异
# 9. Redisson 的 RScoredSortedSet 与延迟队列(RDelayedQueue) A RDelayedQueue 基于 ZSet 将到期时间作为 score,轮询到期后移到队列 ✓ 正确答案 B RScoredSortedSet 按字符串排序,不支持分数 C RDelayedQueue 完全不依赖 ZSet D RScoredSortedSet 用于存储无序集合
# 10. Redisson 的 RStream 与 Redis Stream 消费者组的 Java API 封装 A Stream 不支持消费者组,只支持单消费者 B Stream 消息不持久化,消费即丢 C RStream 封装 Stream 的消费者组,支持 ACK 与重投,实现可靠消息 ✓ 正确答案 D RStream 与 Pub/Sub 语义相同,不可靠
# 11. Redisson 的 RSemaphore 与 RRateLimiter 在并发控制与限流上的差异 A 两者都通过许可数控制并发 B RSemaphore 控制并发数,RRateLimiter 基于令牌桶控制请求速率 ✓ 正确答案 C RRateLimiter 控制并发数,RSemaphore 控制速率 D 两者语义相同,可互换使用
# 12. Redisson 的 RedLock 算法与红锁争议 A RedLock 与单节点锁无任何区别 B RedLock 能保证绝对安全的互斥,不受任何干扰 C RedLock 只需对单个节点加锁即可 D RedLock 对多数节点加锁成功才判定加锁,但其在 GC/时钟漂移下仍可能失效 ✓ 正确答案
# 13. Redisson 的读写锁(RReadWriteLock)与公平锁 A RReadWriteLock 读锁共享、写锁独占,RFairLock 通过排队保证 FIFO 顺序 ✓ 正确答案 B 读写锁的读锁与写锁都互斥,无法共享 C RFairLock 不保证顺序,可能发生饥饿 D 读写锁适合写多读少的场景
# 14. Redisson 与 Jedis 的定位差异,面向分布式对象的封装 vs 底层客户端? A Redisson 不提供分布式锁,只做命令封装 B 两者都直接暴露 Redis 命令,无封装差异 C Jedis 是底层命令客户端,Redisson 是提供分布式对象的框架 ✓ 正确答案 D Jedis 提供分布式锁、队列等高级对象
# 15. Redisson 的分布式 Map/Cache,RMap 与本地缓存(local cache)的一致性如何? A 本地缓存提升读性能但引入短暂不一致,通过 TTL 与失效通知缓解 ✓ 正确答案 B 本地缓存与 Redis 完全一致,无任何延迟 C RMapCache 不支持本地缓存与 TTL D 本地缓存只在单实例生效,多实例各自独立无影响
# 16. Redisson 的分布式限流器,RRateLimiter 的令牌桶如何实现? A 令牌桶没有容量,无法允许突发 B RRateLimiter 基于令牌桶,通过 Lua 脚本原子实现分布式全局限流 ✓ 正确答案 C RRateLimiter 只对本机生效,不共享分布式状态 D 令牌桶与固定窗口限流效果完全相同
# 17. Redisson 的公平锁与读写锁,排队与互斥如何实现? A 两者底层实现完全相同 B 公平锁不保证顺序,可能饥饿 C 读写锁的读锁与写锁都独占,不可共享 D RFairLock 用 ZSet 序号实现 FIFO 排队,RReadWriteLock 用计数实现读共享写互斥 ✓ 正确答案
# 18. Redisson 的 Codec 选择(Kryo/Jackson/Fst)对分布式对象序列化与性能的影响 A 所有 Codec 性能完全相同,无差别 B Kryo/Fst 二进制序列化性能高、体积小,Jackson JSON 可读兼容性好 ✓ 正确答案 C Jackson 二进制序列化性能最好 D Codec 只影响序列化,不影响分布式对象的行为