首页 > 数据库 >Redission分布式锁介绍和配置引入

Redission分布式锁介绍和配置引入

时间:2024-03-31 23:30:26浏览次数:31  
标签:redisson Config redis RedissonClient Redission 引入 config 分布式

        本人在实际项目用于确保Key一致性经常使用的一种加锁方式,帮助分布式环境中互斥访问。很多人问不用锁不是一样完成目标吗?但需要清楚的是这是在高并发的场景下,多节点同时访问缓存的场景,是一般单体项目所无法比拟的,使用锁方式可以控制并发访问,避免缓存击穿和雪崩等问题。(关于缓存击穿和雪崩等后续会出单独一篇文章讲述,敬请期待...),以下我记录了一般引入方式和使用方式。

Redission介绍

        是一个在Redis的基础上实现的Java驻内存数据网格,支持多样Redis配置支持、丰富连接方式、分布式对象、分布式集合、分布式锁、分布式服务、多种序列化方式、三方框架整合,底层采用的是Netty 框架,使用了大量的Lua脚本。

        官方文档:https://github.com/redisson/redisson

Maven配置

聚合工程锁定版本,common项目添加依赖(多个服务都会用到分布式锁)

<!--分布式锁-->
<dependency>
      <groupId>org.redisson</groupId>
      <artifactId>redisson</artifactId>
      <version>3.10.1</version>
</dependency>

环境配置


@Configuration
public class RedssionConfiguration {
    @Value("${spring.redis.host}")
    private String redisHost;
    @Value("${spring.redis.port}")
    private String redisPort;
    @Value("${spring.redis.password}")
    private String redisPwd;

    /**
     * 配置分布式锁的redisson
     * @return
     */
    @Bean
    public RedissonClient redissonClient(){
        Config config = new Config();
        //单机方式
        config.useSingleServer().setPassword(redisPwd).setAddress("redis://"+redisHost+":"+redisPort);
        //集群
        //config.useClusterServers().addNodeAddress("redis://192.168.1.108:6379","redis://192.168.1.109:6379")

        RedissonClient redissonClient = Redisson.create(config);
        return redissonClient;
    }

    /**
     * 集群模式
     * 备注:可以用"rediss://"来启用SSL连接
     */
    /*@Bean
    public RedissonClient redissonClusterClient() {
        Config config = new Config();
        config.useClusterServers().setScanInterval(2000) // 集群状态扫描间隔时间,单位是毫秒
              .addNodeAddress("redis://127.0.0.1:7000")
              .addNodeAddress("redis://127.0.0.1:7002");
        RedissonClient redisson = Redisson.create(config);
        return redisson;
    }*/

}

使用案例

// 分布式锁
RLock lock = redissonClient.getLock(key);
// 尝试加锁,最多等待2秒,上锁以后5秒自动解锁 [lockTime默认为5s, 可以自定义]
res = lock.tryLock(2, lockTime, TimeUnit.SECONDS);

 该方法等价于

res = redisTemplate.opsForValue().setIfAbsent(key, "1", lockTime, TimeUnit.SECONDS);

标签:redisson,Config,redis,RedissonClient,Redission,引入,config,分布式
From: https://blog.csdn.net/qq_30294911/article/details/137212265

相关文章

  • hadoop3.0高可用分布式集群安装
    hadoop高可用,依赖于zookeeper。用于生产环境,企业部署必须的模式. 1.部署环境规划1.1.虚拟机及hadoop角色划分主机名称namenodedatanoderesourcemanagernodemanagerzkfcjournalnodezookeepermasterslave1slave21.2.软件......
  • Springboot + redis分布式锁
    1.引入redis和redisson<!--redis--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><!......
  • 卷积篇 | 引入可改变核卷积AKConv:具有任意采样形状和任意数目参数的卷积核
    前言:Hello大家好,我是小哥谈。可改变核卷积(AKConv)是一种深度学习中的卷积神经网络(CNN)结构,它可以根据需要自适应地改变其卷积核。AKConv相对于传统的卷积神经网络,具有更高的灵活性和适应性,可以在不同的任务和数据集上实现更好的性能。......
  • 中间件 ZK分布式专题与Dubbo微服务入门 6-5 同步异步删除zk节点
    0课程地址https://coding.imooc.com/lesson/201.html#mid=12721 1重点关注1.1本节内容javaapi客户端删除节点,包含同步修改和异步修改,只做了异步,同步不通用(因为没有回调函数,不知道是否删除成功)也可以参照视频看下 1.2javaapi删除节点......
  • 中间件 ZK分布式专题与Dubbo微服务入门 6-4 修改zk节点数据
    0课程地址https://coding.imooc.com/lesson/201.html#mid=12720 1重点关注1.1本节内容javaapi客户端修改节点,只做了同步修改,异步修改方式如1.3,可以参考6-3异步新增 1.2javaapi修改节点同步修改/***参数:......
  • 探索分布式人工智能:多节点合作引领智能革命
    引言:随着人工智能(AI)技术的不断发展,分布式人工智能作为一种新兴的技术模式正逐渐崭露头角。它通过多个节点之间的协作与通信,将数据和计算资源分散在多个地方,从而实现更加灵活、高效的智能计算。本文将深入探讨分布式人工智能的概念、技术原理以及在各个领域的应用,展望其在智能革命......
  • 中间件 ZK分布式专题与Dubbo微服务入门 6-3 同步异步创建zk节点
    0课程地址https://coding.imooc.com/lesson/201.html#mid=12719 1重点关注1.1本节内容javaapi客户端新增临时节点和永久节点 1.2javaapi新增节点同步调用/***同步或者异步创建节点,都不支持子节点的递归......
  • 初识分布式事务
    本地事务本地事务,也就是传统的单机事务。在传统数据库事务中,必须要满足四个原则:分布式事务分布式事务,就是指不是在单个服务或单个数据库架构下,产生的事务,例如:跨数据源的分布式事务跨服务的分布式事务综合情况在数据库水平拆分、服务垂直拆分之后,一个业务操作通常要跨多......
  • 谈谈分布式事务TCC
    TCC(Try-Confirm-Cancel)是一种分布式事务处理模型,用于解决在分布式系统中执行跨服务或跨资源的事务时的一致性问题。与传统的两阶段提交(2PC)和三阶段提交(3PC)相比,TCC提供了一种更为灵活和适应性更强的解决方案,尤其适用于长事务处理和需要高度一致性保证的业务场景。###工作原理......
  • openGauss 使用kubernetes部署分布式数据库
    使用kubernetes部署分布式数据库可获得性本特性自openGauss2.1.0版本开始引入。特性简介一键式部署分布式数据库。客户价值快速完成分布式数据库搭建,验证和使用分布式能力。特性描述通过patroni实现计划内switchover和故障场景自动failover,通过haproxy实现openGauss主备......