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

SpringBoot使用Redisson 实现分布式锁

SpringBoot使用Redisson 实现分布式锁

Java 客户端,数据网格

实现了很多 Java 里支持的接口和数据结构

Redisson 是一个 java 操作 Redis 的客户端,提供了大量的分布式数据集来简化对 Redis 的操作和使用,可以让开发者像使用本地集合一样使用 Redis,完全感知不到 Redis 的存在。

2 种引入方式

  1. spring boot starter 引入(不推荐,版本迭代太快,容易冲突)https://github.com/redisson/redisson/tree/master/redisson-spring-boot-starter
  2. 直接引入:https://github.com/redisson/redisson#quick-start

直接引入

导入依赖

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

配置类

package com.bo.partner.config;

import lombok.Data;
import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author: bo
 * @date: 2022/9/14
 * @description:
 */
@Configuration
@ConfigurationProperties(prefix = "spring.redis")
@Data
public class RedissonConfig {
    private String host;
    private String port;

    @Bean
    public RedissonClient redisClient() {
        // 1.创建配置
        Config config = new Config();
        String redisAddress = String.format("redis://%s:%s",host,port);
        config.useSingleServer().setAddress(redisAddress).setDatabase(3);
        // 2.创建实例
        RedissonClient redisson = Redisson.create(config);
        return redisson;
    }

}

@ConfigurationProperties(prefix = "spring.redis")读取了yml的配置

image-20220914205450476

测试一下

@SpringBootTest
public class RedissonTest {
    @Resource
    private RedissonClient redissonClient;
    @Test
    void set() {
        //list
        List<String> list = new ArrayList<>();
        list.add("aa");
        list.get(0);
        /*list.remove(0);*/
        System.out.println("list"+list.get(0));

        RList<Object> rList = redissonClient.getList("test-list");
        rList.add("bb");
        rList.get(0);
        /*rList.remove(0);*/
        System.out.println("rlist"+rList.get(0));
    }
}

image-20220914205620851

为什么redisson和本地的list一模一样的,点进去看

image-20220914210849280

继承了List接口

相关文章:

  • 微服务初级入门实战分布式项目构建
  • tessafe.sys是病毒吗?tessafe.sys不兼容驱动程序如何解决?
  • Android实现ViewPager适配器kotlin简单实现
  • 点云深度学习系列博客(四):PointNet代码精讲
  • 基于SSH开发HR(人力资源管理系统)简单工作流程系统 课程设计 大作业 毕业设计
  • Promise详解与基础实现(Promise/A+规范)
  • 封装和static
  • LF-YOLO: A Lighter and Faster YOLO for Weld Defect Detection of X-ray Image
  • JavaScript随手笔记---保留小数位
  • 检查网络端口是否正常
  • 基于JavaSwing开发房产管理系统(access数据库) 课程设计 大作业
  • [面试直通版]操作系统之编程语言与运行原理(下)
  • DFP 数据转发协议规则说明
  • Qt开发经验小技巧246-250
  • 《算法导论》第14章-数据结构的扩张 14.1-动态顺序统计 14.2-如何扩张数据结构
  • Google 是如何开发 Web 框架的
  • 分享一款快速APP功能测试工具
  • CentOS从零开始部署Nodejs项目
  • JavaScript设计模式与开发实践系列之策略模式
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • js学习笔记
  • Linux快速复制或删除大量小文件
  • Python实现BT种子转化为磁力链接【实战】
  • SQLServer之创建显式事务
  • storm drpc实例
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • webgl (原生)基础入门指南【一】
  • webpack入门学习手记(二)
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 将回调地狱按在地上摩擦的Promise
  • 前端设计模式
  • 深度解析利用ES6进行Promise封装总结
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • C# - 为值类型重定义相等性
  • puppet连载22:define用法
  • shell使用lftp连接ftp和sftp,并可以指定私钥
  • #define、const、typedef的差别
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (39)STM32——FLASH闪存
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (十一)c52学习之旅-动态数码管
  • (四)汇编语言——简单程序
  • (转)Android学习笔记 --- android任务栈和启动模式
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • (转)菜鸟学数据库(三)——存储过程
  • .h头文件 .lib动态链接库文件 .dll 动态链接库
  • .net经典笔试题
  • .NET精简框架的“无法找到资源程序集”异常释疑
  • .net与java建立WebService再互相调用
  • ::前边啥也没有
  • :=
  • @ModelAttribute使用详解
  • @RequestParam @RequestBody @PathVariable 等参数绑定注解详解