一、Redisson 数据结构总览
Redisson 是 Redis 的 Java 客户端,封装了丰富的数据结构与分布式并发组件。
主要分为五类:
- 基础数据结构(Map / List / Set)
- 分布式锁与同步器
- 队列与延迟队列
- 原子类 & 计数器
- 特殊结构(BitSet / BloomFilter 等)
二、基础数据结构
1. RMap<K, V>(Redis Hash)
RMap<String, String> map = redissonClient.getMap("user:info");
map.put("name", "Tom");
map.get("name");
map.containsKey("name");
适合场景:
2. RList(Redis List)
RList<String> list = redissonClient.getList("msg:list");
list.add("hello");
list.get(0);
适合场景:
3. RSet(Redis Set)
RSet<Long> set = redissonClient.getSet("online:users");
set.add(1001L);
set.contains(1001L);
适合场景:
4. RSortedSet(ZSet)
RSortedSet<String> zset = redissonClient.getSortedSet("rank:score");
zset.add(100, "Alice");
zset.add(80, "Bob");
适合场景:
三、分布式锁与同步器
5. RLock(可重入锁)
RLock lock = redissonClient.getLock("lock:order");
lock.lock();
try {
} finally {
lock.unlock();
}
6. RReadWriteLock
RReadWriteLock rwLock = redissonClient.getReadWriteLock("lock:product");
rwLock.readLock().lock();
rwLock.readLock().unlock();
rwLock.writeLock().lock();
rwLock.writeLock().unlock();
7. RSemaphore(信号量)
RSemaphore semaphore = redissonClient.getSemaphore("seckill");
semaphore.trySetPermits(10);
if (semaphore.tryAcquire()) {
}
8. RCountDownLatch
RCountDownLatch latch = redissonClient.getCountDownLatch("task:done");
latch.trySetCount(3);
latch.await();
适合场景:分布式任务协调
四、队列与延迟队列
9. RQueue / RBlockingQueue
RBlockingQueue<String> queue = redissonClient.getBlockingQueue("order:queue");
queue.put("order123");
queue.take();
10. RDelayedQueue(延迟队列)
RDelayedQueue<String> delayedQueue = redissonClient.getDelayedQueue(queue);
delayedQueue.offer("order123", 30, TimeUnit.MINUTES);
适合场景:订单超时 / 自动取消
五、原子类与计数器
11. RAtomicLong
RAtomicLong counter = redissonClient.getAtomicLong("order:id");
long id = counter.incrementAndGet();
12. RLongAdder
RLongAdder adder = redissonClient.getLongAdder("pv:count");
adder.increment();
适合场景:高并发计数(比 AtomicLong 快)
六、特殊结构
13. RBitSet(BitMap 封装)
RBitSet bitSet = redissonClient.getBitSet("sign:10086:202601");
bitSet.set(5);
bitSet.get(5);
bitSet.cardinality();
适合场景:签到统计
14. RBloomFilter(布隆过滤器)
RBloomFilter<String> bloom = redissonClient.getBloomFilter("user:filter");
bloom.tryInit(100_000, 0.01);
bloom.add("user1");
bloom.contains("user1");
适合场景:防缓存穿透
15. RRateLimiter(限流)
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 |