分布式锁几种模式

1、主从模式

package com.scm.common.utils.redis;

import com.scm.common.utils.properties.RedissonConfigProperties;
import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 分布式锁配置
 * Created by luxing on 13:31 2021/5/7
 */
@Configuration
@EnableConfigurationProperties(RedissonConfigProperties.class)
public class MasterClusterRedissonConfig {

    @Bean
    public RedissonClient redissonClient(RedissonConfigProperties properties) {
        Config config = new Config();

        config.useMasterSlaveServers()
                //可以用"rediss://"来启用SSL连接
                .setMasterAddress("redis://127.0.0.1:6379")
                .addSlaveAddress("redis://127.0.0.1:6389", "redis://127.0.0.1:6332", "redis://127.0.0.1:6419")
                .addSlaveAddress("redis://127.0.0.1:6399")
                .setPassword(properties.getPassword())
                .setSubscriptionConnectionPoolSize(16)
                .setTimeout(15000)
                .setReconnectionTimeout(15000)
                .setIdleConnectionTimeout(50000)
                .setConnectTimeout(50000);

        return Redisson.create(config);
    }

}

2、单机模式


/**
 * 分布式锁配置
 * Created by luxing on 13:31 2021/5/7
 */
@Configuration
@EnableConfigurationProperties(RedissonConfigProperties.class)
public class SingleRedissonConfig {

    @Bean
    public RedissonClient redissonClient(RedissonConfigProperties properties) {
        Config config = new Config();
        // todo 暂时redis连接数设置小
        config.useSingleServer()
                .setAddress(properties.getAddressUrl())
                .setPassword(properties.getPassword())
                .setConnectionPoolSize(32)
                .setConnectionMinimumIdleSize(6)
                .setSubscriptionConnectionPoolSize(16)
                .setTimeout(15000)
                .setReconnectionTimeout(15000)
                .setIdleConnectionTimeout(50000)
                .setConnectTimeout(50000);
                /*
                .setRetryInterval(3000)
                .setTimeout(50000)
                .setReconnectionTimeout(10000)
                .setConnectTimeout(10000);
                */
        return Redisson.create(config);
    }

}

3、哨兵模式


/**
 * 分布式锁配置
 * Created by luxing on 13:31 2021/5/7
 */
@Configuration
@EnableConfigurationProperties(RedissonConfigProperties.class)
public class SentinelRedissonConfig {

    @Bean
    public RedissonClient redissonClient(RedissonConfigProperties properties) {
        Config config = new Config();

        config.useSentinelServers()
                .setMasterName("mymaster")
                //可以用"rediss://"来启用SSL连接
                .addSentinelAddress("127.0.0.1:26389", "127.0.0.1:26379")
                .addSentinelAddress("127.0.0.1:26319")
                .addSentinelAddress("redis://127.0.0.1:46379")
                .setPassword(properties.getPassword())
                .setSubscriptionConnectionPoolSize(16)
                .setTimeout(15000)
                .setReconnectionTimeout(15000)
                .setIdleConnectionTimeout(50000)
                .setConnectTimeout(50000);

        return Redisson.create(config);
    }

}

github官方地址参考文档:配置方法 · redisson/redisson Wiki (github.com)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值