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
相关推荐
Database_Cool_4 小时前
单机 MySQL 迁移到分布式数据库方便吗?阿里云 PolarDB-X 100% MySQL 协议兼容零改造平滑迁移
数据库·分布式·mysql
糖果店的幽灵9 小时前
langgraph的 MessagesState 解读
java·开发语言·人工智能·windows·langgraph
闪电悠米9 小时前
力扣hot100-41.缺失的第一个正数-原地哈希详解
数据结构·算法·哈希算法
WL学习笔记9 小时前
堆(数据结构)
数据结构·
骑上单车去旅行10 小时前
MD5校验对比脚本
linux·服务器·windows
FreeBuf_12 小时前
Windows NT OS内核提权漏洞PoC已公开
windows
wabs66613 小时前
关于图论【卡码网100.最大岛屿的面积的思考】
数据结构·算法·图论
雲帝13 小时前
Windows虚拟机UDP大包分片排障
windows·网络协议·udp
肥胖小羊13 小时前
解决企业微信 AccessToken 刷新并发冲突的分布式锁机制实践
分布式·企业微信
李少兄14 小时前
Windows 键盘快捷键指南
windows·计算机外设·快捷键