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

发布于:2025-07-08 ⋅ 阅读:(15) ⋅ 点赞:(0)

目录

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: null
  database: 0
  connectionPoolSize: 64
  connectionMinimumIdleSize: 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();
        
        // 获取分布式List
        RList<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

网站公告

今日签到

点亮在社区的每一天
去签到