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等。