Redisson 分布式对象

共 18 题
#

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 只影响序列化,不影响分布式对象的行为