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
相关推荐
alphaTao5 分钟前
LeetCode 每日一题 2026/3/16-2026/3/22
linux·windows·leetcode
历程里程碑9 分钟前
41 .UDP -3 群聊功能实现:线程池助力多客户端通信
linux·开发语言·网络·数据结构·c++·网络协议·udp
阿昭L13 分钟前
说说VirtualAlloc的第三个参数
windows
bbbb36519 分钟前
排序算法的演进史:从冒泡到快速再到TimSort的技术7
数据结构·算法·排序算法
不染尘.23 分钟前
排序算法详解1
开发语言·数据结构·c++·算法·排序算法
不要秃头的小孩31 分钟前
力扣刷题——77. 组合
数据结构·python·算法·leetcode
翱翔的苍鹰40 分钟前
什么是 Deep Agents?
人工智能·windows·语言模型·自然语言处理·langchain·开源
014-code40 分钟前
Dubbo 之 “最速传说”
java·分布式·dubbo
Elsa️74642 分钟前
洛谷p5718 复习下快速排序和堆排序
数据结构·算法·排序算法
夏日听雨眠1 小时前
文件学习9
数据结构·学习·算法