【redisson学习笔记】

1)clone项目

复制代码
git clone https://github.com/redisson/redisson.git

本来想直接用maven编译源码, 却发现各种错误,主要是maven的编译插件版本问题。

2)然后用maven包方式引入

复制代码
<dependencies>
        <dependency>
            <groupId>org.redisson</groupId>
            <artifactId>redisson</artifactId>
            <version>3.23.5</version>
        </dependency>
    </dependencies>

3)RedissonManager.java

复制代码
package org.example.redis;

import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;

public class RedisManager {
    private static RedisManager INSTANCE = new RedisManager();

    private RedissonClient redisson;

    public static RedisManager inst() {
        return INSTANCE;
    }

    public void init() {
        Config config = new Config();
        config.useSingleServer()
                .setAddress("redis://127.0.0.1:6379");


        this.redisson = Redisson.create(config);

        System.out.println("redisson init success!");
    }

    public RedissonClient getRedisson() {
        return redisson;
    }
}

4)Main.java

复制代码
package org.example;

import org.example.redis.RedisManager;
import org.redisson.api.RMap;
import org.redisson.api.RedissonClient;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        RedisManager.inst().init();

        RedissonClient redisson = RedisManager.inst().getRedisson();
        RMap<String, List<String>> map = redisson.getMap("id:map");


        List<String> list = new ArrayList<>();
        list.add("abc");
        list.add("defg");
        map.put("1", list);


        RMap<String, List<String>> map1 = redisson.getMap("id:map");

        List<String> strings = map1.get("1");
        strings.remove(0);

        System.out.println(map1);

    }
}

1.突然想起来,其实我不需要去编译源码啊,直接关联起来源码不就可以调试了嘛。所以,我关联了源码就开始了调试,非常方便。

2.我们可以用断点,查看出RMap的实现是:RedissonMap,为啥取出List后在修改就不生效呢?

这是因为我们发现RMap的put执行时,其实是把value进行了编码,所以才能存下来。

5)源码查看

1.redisson

复制代码
org.redisson.api

这个肯定是最重要的包了,我们开发用的接口都在这,像RMap等。

相关推荐
nongcunqq3 分钟前
逆向 qq 音乐 sign,data, 解密 response 返回的 arraybuffer
笔记
笑鸿的学习笔记17 分钟前
qt-C++笔记之布局管理`space` 和 `margin`的区别
c++·笔记·qt
居然是阿宋33 分钟前
【学习笔记】OkHttp源码架构解析:从设计模式到核心实现
笔记·学习·okhttp
想成为大佬的每一天1 小时前
Linux驱动学习day20(pinctrl子系统驱动大全)
学习
使一颗心免于哀伤1 小时前
《设计模式之禅》笔记摘录 - 5.代理模式
笔记·设计模式
不太可爱的叶某人10 小时前
【学习笔记】MySQL技术内幕InnoDB存储引擎——第5章 索引与算法
笔记·学习·mysql
岁岁岁平安10 小时前
Redis基础学习(五大值数据类型的常用操作命令)
数据库·redis·学习·redis list·redis hash·redis set·redis string
知识分享小能手11 小时前
Vue3 学习教程,从入门到精通,使用 VSCode 开发 Vue3 的详细指南(3)
前端·javascript·vue.js·学习·前端框架·vue·vue3
pay4fun12 小时前
2048-控制台版本
c++·学习
知识分享小能手13 小时前
Bootstrap 5学习教程,从入门到精通,Bootstrap 5 表单验证语法知识点及案例代码(34)
前端·javascript·学习·typescript·bootstrap·html·css3