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
相关推荐
AKAMAI2 小时前
分布式边缘推理正在改变一切
人工智能·分布式·云计算
豆是浪个2 小时前
Linux(Centos 7.6)命令详解:ps
linux·windows·centos
慧一居士2 小时前
xxl-job服务搭建,以及 springboot 集成xxl-job 项目完整步骤示例
分布式·中间件
我是小狼君2 小时前
【查找篇章之三:斐波那契查找】斐波那契查找:用黄金分割去“切”数组
数据结构·算法
故事不长丨3 小时前
C#集合:解锁高效数据管理的秘密武器
开发语言·windows·c#·wpf·集合·winfrom·字典
放荡不羁的野指针3 小时前
leetcode150题-字符串
数据结构·算法·leetcode
bubiyoushang8883 小时前
MATLAB比较SLM、PTS和Clipping三种算法对OFDM系统PAPR的抑制效果
数据结构·算法·matlab
C雨后彩虹4 小时前
计算误码率
java·数据结构·算法·华为·面试
不染尘.4 小时前
进程切换和线程调度
linux·数据结构·windows·缓存
ada7_5 小时前
LeetCode(python)22.括号生成
开发语言·数据结构·python·算法·leetcode·职场和发展