当前位置: 首页 > news >正文

Redisson详细教程 - 从入门到精通

目录

1. 什么是Redisson

2. 为什么要用Redisson

3. 环境准备和配置

4. 基础使用方法

5. 分布式数据结构

6. 分布式锁详解

7. 分布式服务

8. 实际应用场景

9. 最佳实践

10. 常见问题解答

总结


1. 什么是Redisson

简单理解

想象一下,Redis就像一个超级强大的"内存仓库",而Redisson就是帮你更方便地使用这个仓库的"管理工具"。

官方定义: Redisson是一个在Redis基础上实现的Java分布式对象和服务框架,基于Netty框架实现。

核心特点

  • 简单易用: 像使用本地Java对象一样使用分布式对象
  • 功能丰富: 提供了50多种分布式对象和服务
  • 高性能: 基于Netty异步框架
  • 企业级: 支持集群、哨兵、单机等多种部署模式

2. 为什么要用Redisson

传统方式的问题

// 传统Redis客户端使用方式
Jedis jedis = new Jedis("localhost", 6379);
jedis.set("key", "value");
String value = jedis.get("key");
jedis.close();

问题:

  • 代码繁琐,需要手动管理连接
  • 没有分布式对象的概念
  • 实现分布式锁等功能需要大量代码

Redisson的优势

// Redisson使用方式
RedissonClient redisson = Redisson.create();
RBucket<String> bucket = redisson.getBucket("key");
bucket.set("value");
String value = bucket.get();

优势:

  • 代码简洁,自动管理连接
  • 提供丰富的分布式数据结构
  • 内置分布式锁、信号量等高级功能

3. 环境准备和配置

3.1 添加依赖

Maven:

<dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.24.3</version>
</dependency>

Gradle:

implementation 'org.redisson:redisson:3.24.3'

3.2 基础配置

单机模式
Config config = new Config();
config.useSingleServer().setAddress("redis://127.0.0.1:6379").setPassword("your_password")  // 如果有密码.setDatabase(0);               // 数据库编号RedissonClient redisson = Redisson.create(config);
集群模式
Config config = new Config();
config.useClusterServers().addNodeAddress("redis://127.0.0.1:7004").addNodeAddress("redis://127.0.0.1:7001").addNodeAddress("redis://127.0.0.1:7000");RedissonClient redisson = Redisson.create(config);
配置文件方式
# redisson.yaml
singleServerConfig:address: "redis://127.0.0.1:6379"password: nulldatabase: 0connectionPoolSize: 64connectionMinimumIdleSize: 24
// 使用配置文件
Config config = Config.fromYAML(new File("redisson.yaml"));
RedissonClient redisson = Redisson.create(config);

4. 基础使用方法

4.1 基本数据操作

public class RedissonBasicExample {public static void main(String[] args) {// 创建客户端RedissonClient redisson = Redisson.create();// 字符串操作RBucket<String> bucket = redisson.getBucket("myKey");bucket.set("Hello Redisson!");String value = bucket.get();System.out.println(value); // 输出: Hello Redisson!// 设置过期时间bucket.set("tempValue", 30, TimeUnit.SECONDS);// 关闭客户端redisson.shutdown();}
}

4.2 异步操作

// 异步设置值
RBucket<String> bucket = redisson.getBucket("asyncKey");
RFuture<Void> future = bucket.setAsync("async value");// 异步获取值
RFuture<String> getFuture = bucket.getAsync();
getFuture.whenComplete((value, exception) -> {if (exception == null) {System.out.println("异步获取到的值: " + value);} else {exception.printStackTrace();}
});

5. 分布式数据结构

5.1 分布式List

public class DistributedListExample {public static void main(String[] args) {RedissonClient redisson = Redisson.create();// 获取分布式ListRList<String> list = redisson.getList("myList");// 像普通List一样使用list.add("第一个元素");list.add("第二个元素");list.add(1, "插入的元素"); // 在索引1处插入// 遍历for (String item : list) {System.out.println(item);}// 获取大小System.out.println("List大小: " + list.size());// 删除元素list.remove("第一个元素");redisson.shutdown();}
}

5.2 分布式Set

public class DistributedSetExample {public static void main(String[] args) {RedissonClient redisson = Redisson.create();RSet<String> set = redisson.getSet("mySet");// 添加元素set.add("apple");set.add("banana");set.add("apple"); // 重复元素不会被添加// 检查是否包含boolean contains = set.contains("apple");System.out.println("包含apple: " + contains
http://www.dtcms.com/a/268823.html

相关文章:

  • zookeeper介绍
  • PostgreSQL性能优化实践指南:从原理到实战
  • 大语言模型(LLM)课程学习(Curriculum Learning)、数据课程(data curriculum)指南:从原理到实践
  • 知识竞赛答题pk小程序用户操作手册
  • Linux内核ext4 extent:解决大文件存储难题的关键
  • MybatisPlus(一)扩展功能
  • MS51224 一款 16 位、3MSPS、双通道、同步采样模数转换器(ADC)
  • LMH1219RTWR-富利威-3G/12G-SDI
  • 【mini-spring】【更新中】第一章 IOC与Bean源码及思路解析
  • 如何用 Mockito 玩转单元测试
  • 闲庭信步使用图像验证平台加速FPGA的开发:第三课——YCbCr转RGB的FPGA实现
  • 搜广推校招面经八十八
  • Linux批量执行工具脚本使用指南:一键运行多个release-dev.sh脚本
  • macOS运行python程序遇libiomp5.dylib库冲突错误解决方案
  • 【STM32】const 变量存储学习笔记
  • 【论文阅读】CogView: Mastering Text-to-Image Generation via Transformers
  • 文心一言4.5开源模型测评:ERNIE-4.5-0.3B超轻量模型部署指南
  • React19 新增Hooks:useOptimistic
  • 巧借东风:32位栈迁移破解ciscn_2019_es_2的空间困局
  • maven 发布到中央仓库-01-概览
  • 23、企业租赁管理(Rent)全流程指南:从资产盘活到价值最大化的数字化实践
  • Dify工作流实战:输入接口名,自动生成带源码的Markdown API文档(附完整Prompt)
  • Linux 文件系统与日志分析(补充)
  • 报错 400 和405解决方案
  • 海外短剧系统开发:PC端与H5端的全栈实践与深度解析
  • Day07- 管理并发和并行挑战:竞争条件和死锁
  • 在bash shell 函数传递数组的问题2
  • 【DeepSeek实战】17、MCP地图服务集成全景指南:高德、百度、腾讯三大平台接入实战
  • PCIE Ack/Nak机制详解
  • Unity 实现与 Ollama API 交互的实时流式响应处理