Redisson 核心数据结构与分布式组件实战手册

文章目录

    • [一、Redisson 数据结构总览 🗂️](#一、Redisson 数据结构总览 🗂️)
    • 二、基础数据结构(最常用)📦
      • [1️⃣ `RMap<K, V>`(Redis Hash)](#1️⃣ RMap<K, V>(Redis Hash))
      • [2️⃣ `RList<E>`(Redis List)](#2️⃣ RList<E>(Redis List))
      • [3️⃣ `RSet<E>`(Redis Set)](#3️⃣ RSet<E>(Redis Set))
      • [4️⃣ `RSortedSet<E>`(ZSet)](#4️⃣ RSortedSet<E>(ZSet))
    • [三、分布式锁 & 同步器(面试王者)🔒](#三、分布式锁 & 同步器(面试王者)🔒)
      • [5️⃣ `RLock`(可重入锁)](#5️⃣ RLock(可重入锁))
      • [6️⃣ `RReadWriteLock`](#6️⃣ RReadWriteLock)
      • [7️⃣ `RSemaphore`(信号量)](#7️⃣ RSemaphore(信号量))
      • [8️⃣ `RCountDownLatch`](#8️⃣ RCountDownLatch)
    • [四、队列 & 延迟队列 🚦](#四、队列 & 延迟队列 🚦)
      • [9️⃣ `RQueue / RBlockingQueue`](#9️⃣ RQueue / RBlockingQueue)
      • [🔟 `RDelayedQueue`(延迟神器)](#🔟 RDelayedQueue(延迟神器))
    • [五、原子类 & 计数器 ⚡](#五、原子类 & 计数器 ⚡)
      • [1️⃣1️⃣ `RAtomicLong`](#1️⃣1️⃣ RAtomicLong)
      • [1️⃣2️⃣ `RLongAdder`](#1️⃣2️⃣ RLongAdder)
    • 六、特殊结构(高阶)🧪
      • [1️⃣3️⃣ `RBitSet`(BitMap 封装)](#1️⃣3️⃣ RBitSet(BitMap 封装))
      • [1️⃣4️⃣ `RBloomFilter`(布隆过滤器)](#1️⃣4️⃣ RBloomFilter(布隆过滤器))
      • [1️⃣5️⃣ `RRateLimiter`(限流)](#1️⃣5️⃣ RRateLimiter(限流))
    • [七、一张总表帮你记忆 🧠📊](#七、一张总表帮你记忆 🧠📊)

一、Redisson 数据结构总览 🗂️

Redisson ≈ Redis 数据结构 + 分布式并发组件

大致分 5 大类:

1️⃣ 基础数据结构(Map / List / Set)

2️⃣ 分布式锁与同步器

3️⃣ 队列与延迟队列

4️⃣ 原子类 & 计数器

5️⃣ 特殊结构(BitSet / BloomFilter 等)


二、基础数据结构(最常用)📦

1️⃣ RMap<K, V>(Redis Hash)

java 复制代码
RMap<String, String> map = redissonClient.getMap("user:info");

map.put("name", "Tom");
map.get("name");
map.containsKey("name");

📌 适合:

  • 用户信息缓存

  • 配置中心

  • Session 数据


2️⃣ RList<E>(Redis List)

java 复制代码
RList<String> list = redissonClient.getList("msg:list");

list.add("hello");
list.get(0);

📌 适合:

  • 简单顺序列表

  • 消息记录(非阻塞)


3️⃣ RSet<E>(Redis Set)

java 复制代码
RSet<Long> set = redissonClient.getSet("online:users");

set.add(1001L);
set.contains(1001L);

📌 适合:

  • 去重

  • 在线用户集合


4️⃣ RSortedSet<E>(ZSet)

java 复制代码
RSortedSet<String> zset = redissonClient.getSortedSet("rank:score");

zset.add(100, "Alice");
zset.add(80, "Bob");

📌 适合:

  • 排行榜

  • 权重排序


三、分布式锁 & 同步器(面试王者)🔒


5️⃣ RLock(可重入锁)

java 复制代码
RLock lock = redissonClient.getLock("lock:order");

lock.lock();
try {
    // 临界区
} finally {
    lock.unlock();
}

6️⃣ RReadWriteLock

java 复制代码
RReadWriteLock rwLock =
        redissonClient.getReadWriteLock("lock:product");

rwLock.readLock().lock();
// 读
rwLock.readLock().unlock();

rwLock.writeLock().lock();
// 写
rwLock.writeLock().unlock();

7️⃣ RSemaphore(信号量)

java 复制代码
RSemaphore semaphore =
        redissonClient.getSemaphore("seckill");

semaphore.trySetPermits(10);

if (semaphore.tryAcquire()) {
    // 抢到名额
}

8️⃣ RCountDownLatch

java 复制代码
RCountDownLatch latch =
        redissonClient.getCountDownLatch("task:done");

latch.trySetCount(3);
latch.await();

📌 分布式任务协调


四、队列 & 延迟队列 🚦


9️⃣ RQueue / RBlockingQueue

java 复制代码
RBlockingQueue<String> queue =
        redissonClient.getBlockingQueue("order:queue");

queue.put("order123");
queue.take();

🔟 RDelayedQueue(延迟神器)

java 复制代码
RDelayedQueue<String> delayedQueue =
        redissonClient.getDelayedQueue(queue);

delayedQueue.offer("order123", 30, TimeUnit.MINUTES);

📌 订单超时 / 自动取消


五、原子类 & 计数器 ⚡


1️⃣1️⃣ RAtomicLong

java 复制代码
RAtomicLong counter =
        redissonClient.getAtomicLong("order:id");

long id = counter.incrementAndGet();

1️⃣2️⃣ RLongAdder

java 复制代码
RLongAdder adder =
        redissonClient.getLongAdder("pv:count");

adder.increment();

📌 高并发计数(比 AtomicLong 快)


六、特殊结构(高阶)🧪


1️⃣3️⃣ RBitSet(BitMap 封装)

java 复制代码
RBitSet bitSet =
        redissonClient.getBitSet("sign:10086:202601");

bitSet.set(5);
bitSet.get(5);
bitSet.cardinality(); // 已签到天数

📌 非常适合你现在的 签到系统


1️⃣4️⃣ RBloomFilter(布隆过滤器)

java 复制代码
RBloomFilter<String> bloom =
        redissonClient.getBloomFilter("user:filter");

bloom.tryInit(100_000, 0.01);
bloom.add("user1");

bloom.contains("user1");

📌 防缓存穿透


1️⃣5️⃣ RRateLimiter(限流)

java 复制代码
RRateLimiter limiter =
        redissonClient.getRateLimiter("api:limit");

limiter.trySetRate(
    RateType.OVERALL, 10, 1, RateIntervalUnit.SECONDS);

if (limiter.tryAcquire()) {
    // 允许访问
}

七、一张总表帮你记忆 🧠📊

分类 结构 调用方式
Map RMap getMap
List RList getList
Set RSet getSet
ZSet RSortedSet getSortedSet
RLock getLock
读写锁 RReadWriteLock getReadWriteLock
信号量 RSemaphore getSemaphore
队列 RBlockingQueue getBlockingQueue
延迟队列 RDelayedQueue getDelayedQueue
计数器 RAtomicLong getAtomicLong
BitMap RBitSet getBitSet
布隆 RBloomFilter getBloomFilter
限流 RRateLimiter getRateLimiter
相关推荐
Akiyama_Mio-Kon9 小时前
2026 最新:Dify 本地 Docker 部署完整教程(Windows + Git Bash)
windows·git·docker
霸道流氓气质9 小时前
Spring AI 输出解析器进阶
人工智能·windows·spring
黄一一91124312 小时前
跨平台视频图片压缩互转!离线视频压缩工具!Github开源轻松无损压缩视频!Win/Mac/Linux三端通用开源工具
windows·macos·音视频·开源软件
明月_清风12 小时前
从二叉树到 B+ 树:一文搞懂工程中「树」的演化之道
数据结构·算法·go
渡我白衣12 小时前
并查集:基础认识与模拟实现
android·java·javascript·数据结构·c++·算法·并查集
池塘游鱼13 小时前
VMware虚拟机安装Windows 10系统 超详细图文教程
windows·vmware
血小板要健康13 小时前
链表 阶段算法总结
java·数据结构·笔记·算法·leetcode·链表
明达智控技术14 小时前
告别停机内卷!热插拔远程IO,解锁工控运维新范式
分布式·物联网·自动化
漂着的圆木15 小时前
MCP 2026-07-28 长任务改造:别再用 HTTP 超时判断任务失败
分布式·架构·状态模式·ai agent
易点云徐源16 小时前
(已解决)BOSS直聘 Windows 客户端一直“加载中,请稍候”怎么办?
windows