前提条件,

pom依赖,引入redisson

  1. <!-- https://mvnrepository.com/artifact/org.redisson/redisson-spring-boot-starter -->
  2. <dependency>
  3. <groupId>org.redisson</groupId>
  4. <artifactId>redisson-spring-boot-starter</artifactId>
  5. <version>3.15.5</version>
  6. </dependency>
  7. <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-redis -->
  8. <dependency>
  9. <groupId>org.springframework.boot</groupId>
  10. <artifactId>spring-boot-starter-data-redis</artifactId>
  11. <version>2.4.5</version>
  12. </dependency>

基础

网上文档很少,直接看源码

1:找到自动装配类

作为一个成熟的框架,必须有自动装配 ~~~
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.redisson.spring.starter.RedissonAutoConfiguration 找到对应的类
很简单的类,预设了几个bean
image.png

2:主要的bean

RedissonClient

设置了一下默认的config
image.png
里面内置了本机的地址 127.0.0.1 :6379
所以这个bean可以直接用(如果没有改的话)

3:来个小demo。开启本地redis,啥都不用管

  1. @RestController
  2. public class Red {
  3. @Autowired
  4. private RedissonClient redissonClient;
  5. @GetMapping("/redis")
  6. public boolean get() throws InterruptedException {
  7. RBucket<Object> bucket = redissonClient.getBucket("234");
  8. boolean exists = redissonClient.getBucket("234").setIfExists("234");
  9. Object o = bucket.get();
  10. return exists;
  11. }
  12. }

哦了。

了解config

自动装配其实啥都没做,只给了一些默认参数
config几个方式
1:文件型 支持 config.fromjson/fromyaml 。。其实没啥区别还是要代码实现
2:代码型

直接上代码,支持这一堆参数的自定义
image.png
给了一下默认参数,根据业务调整
image.png

重点看
好像也没啥
image.png

现在没那么多实例,先上单机的配置,其他的参数可以查看文档
定义一个yml key就是参数名称 value,看类内部的变量,要对应,不然解析不了
image.png
自定义RedissonClient
image.png
运行~~ 成功了

了解 RedissonClient

这个类似于 redistemplate ,提供面向redis操作的接口
对应关系 查看 https://www.bookstack.cn/read/redisson-wiki-zh/11.-Redis%e5%91%bd%e4%bb%a4%e5%92%8cRedisson%e5%af%b9%e8%b1%a1%e5%8c%b9%e9%85%8d%e5%88%97%e8%a1%a8.md
常用的
image.png

最常见的锁
也可以不指定时间,看门狗每30秒续一次,直到解锁或服务挂了
image.png

消息

支持订阅
模拟生产/消费

  1. RTopic myTopic = redissonClient.getTopic("myTopic");
  2. myTopic.addListener(String.class,new MessageListener<String>(){
  3. @Override
  4. public void onMessage(CharSequence channel, String msg) {
  5. System.out.println("消费消息"+msg);
  6. }
  7. });
  8. RTopic myTopic1 = redissonClient.getTopic("myTopic");
  9. myTopic1.publish("你好");

结果
image.png
基于流实现消息队列