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
相关推荐
不会就选b23 分钟前
算法日常・每日刷题--<贪心>26
数据结构·算法
逐流人1 小时前
Ceph分布式存储集群配置与池管理:从配置优先级到PG、复本池与纠删码池
运维·分布式·ceph·云原生·云计算·rados
天天喝旺仔3 小时前
gRPC 底层原理:HTTP/2 多路复用、Protobuf 序列化与四种流模式
分布式·http·微服务·rpc
2601_962364974 小时前
从录入到解锁,完整梳理 Windows Hello 识别链路
windows·安全·电脑
Logic1014 小时前
C语言/数据结构位运算题解:异或XOR找出书柜中编号只出现一次的那一层——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
hacker_LeeFei4 小时前
Windows 下配置 Redis 8.10.2 开机自启:一次踩坑全记录
数据库·windows·redis
青山木4 小时前
Hot 100 --- 下一个排列
java·数据结构·算法·leetcode
赵文宇(温玉)6 小时前
怎么下载 Windows 的 ISO 系统镜像
windows
SelectDB技术团队6 小时前
Apache Doris 高性能 Open Lake Variant 读写技术解析(含对比数据)
数据结构·数据库·clickhouse·日志·apache doris·selectdb·湖仓架构升级
kiracrimson6 小时前
希尔排序:让插入排序不再怕逆序
数据结构·算法·排序算法