Redis 高级客户端 Redisson 的使用

前置说明

这篇文章我将重点介绍在实际的业务开发中,我们如何构建一个真正干净的、基于 spring data + redisson 的应用客户端。在此基础上使用 缓存组件限流器组件 看一下 redisson 的相关 API。redis 是集群环境,redisson 和 spring data 也都采用最新的前沿版本。

Redis 高级客户端 Redisson 简介

Redisson 是什么?

在 Java 生态中,Redisson 是一个非常强大的 Redis 客户端。如果说 Redis 是一台性能卓越的引擎,那么 Redisson 就是一套基于这台引擎开发的 “自动驾驶系统”。它不仅仅是让你操作 Redis 的字符串、哈希等基础数据类型,而是将 Redis 的功能封装成了 Java 原生的集合和工具。比如你想实现一个“分布式锁”,你需要自己写 Lua 脚本、考虑超时、容错等。而在 Redisson 中,你只需要像操作 Java 原生 Lock 一样调用 lock.lock(),复杂的逻辑全由 Redisson 在底层帮你搞定。

Java 并发世界的金字塔体系

进程、线程、管程

进程Porcess:资源盒子

进程是操作系统分配资源的最小单位。它是内核为你程序画的一块地盘。每个进程都有自己独立的虚拟地址空间、文件描述符和安全上下文。

Redis 分布式锁的实现

Redis 分布式锁实现的思路

我们知道,Redis 有一个天然支持锁的指令 set <key> <value> NX PX <ttl_millis>,这个指令本身就是原子性的,这就是 redis 实现分布式锁的基础。通过这条指令实现简单的分布式互斥锁,那基本就是手到擒来,但在实际的生产环境,我们更推荐使用 LUA 脚本进行封装。理由如下: