文章目录
-
- [一、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))
- [1️⃣ `RMap<K, V>`(Redis Hash)](#1️⃣
- [三、分布式锁 & 同步器(面试王者)🔒](#三、分布式锁 & 同步器(面试王者)🔒)
-
- [5️⃣ `RLock`(可重入锁)](#5️⃣
RLock(可重入锁)) - [6️⃣ `RReadWriteLock`](#6️⃣
RReadWriteLock) - [7️⃣ `RSemaphore`(信号量)](#7️⃣
RSemaphore(信号量)) - [8️⃣ `RCountDownLatch`](#8️⃣
RCountDownLatch)
- [5️⃣ `RLock`(可重入锁)](#5️⃣
- [四、队列 & 延迟队列 🚦](#四、队列 & 延迟队列 🚦)
-
- [9️⃣ `RQueue / RBlockingQueue`](#9️⃣
RQueue / RBlockingQueue) - [🔟 `RDelayedQueue`(延迟神器)](#🔟
RDelayedQueue(延迟神器))
- [9️⃣ `RQueue / RBlockingQueue`](#9️⃣
- [五、原子类 & 计数器 ⚡](#五、原子类 & 计数器 ⚡)
-
- [1️⃣1️⃣ `RAtomicLong`](#1️⃣1️⃣
RAtomicLong) - [1️⃣2️⃣ `RLongAdder`](#1️⃣2️⃣
RLongAdder)
- [1️⃣1️⃣ `RAtomicLong`](#1️⃣1️⃣
- 六、特殊结构(高阶)🧪
-
- [1️⃣3️⃣ `RBitSet`(BitMap 封装)](#1️⃣3️⃣
RBitSet(BitMap 封装)) - [1️⃣4️⃣ `RBloomFilter`(布隆过滤器)](#1️⃣4️⃣
RBloomFilter(布隆过滤器)) - [1️⃣5️⃣ `RRateLimiter`(限流)](#1️⃣5️⃣
RRateLimiter(限流))
- [1️⃣3️⃣ `RBitSet`(BitMap 封装)](#1️⃣3️⃣
- [七、一张总表帮你记忆 🧠📊](#七、一张总表帮你记忆 🧠📊)
一、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 |