分布式锁redisson

发布于:2024-06-06 ⋅ 阅读:(142) ⋅ 点赞:(0)

1:pom.xml添加依赖

<dependency>
	<groupId>org.redisson</groupId>
	<artifactId>redisson-spring-boot-starter</artifactId>
	<version>3.21.1</version>
</dependency>

2-1:方法一:读取默认yml配置

# redis配置
spring:
  redis:
    database: 0
    host: 127.0.0.1
    password: 123456
    port: 6379

2-2:redisson.yml文件的方式

spring:
  redis:
    redisson:
        file: classpath:redisson.yml

2-3:redisson.yml

# 单节点配置
singleServerConfig:
  # 数据库编号
  database: 0
  # 节点地址
  address: redis://127.0.0.1:6379
  # 密码
  password: 123456
# 集群模式
clusterServersConfig:
  # 集群节点地址
  nodeAddresses:
    - "redis://127.0.0.1:16379"
    - "redis://127.0.0.1:26379"
    - "redis://127.0.0.1:36379"
  password: 123456
#Redis集群不支持多个数据库的概念,默认只有一个数据库,即db 0,所以这里是没有database这个参数的

3-1:方法二:自定义yml配置

spring:
  redis:
    # redisson配置
    redisson:
        # 如果该值为false,系统将不会创建RedissionClient的bean。
        enabled: true
        # mode的可用值为,single/cluster/sentinel/master-slave
        mode: single
        # single: 单机模式
        #   address: redis://localhost:6379
        # cluster: 集群模式
        #   每个节点逗号分隔,同时每个节点前必须以redis://开头。
        #   address: redis://localhost:6379,redis://localhost:6378,...
        # sentinel:
        #   每个节点逗号分隔,同时每个节点前必须以redis://开头。
        #   address: redis://localhost:6379,redis://localhost:6378,...
        # master-slave:
        #   每个节点逗号分隔,第一个为主节点,其余为从节点。同时每个节点前必须以redis://开头。
        #   address: redis://localhost:16379,redis://localhost:26379
        address: redis://127.0.0.1:6379
        # redis 密码,空可以不填。
        password: 123456
        database: 0

3-2:RedissonConfig自定义配置类

import org.apache.commons.lang3.StringUtils;
import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
 
/**
 * Redisson配置类。
 */
@Configuration
@ConditionalOnProperty(name = "spring.redis.redisson.enabled", havingValue = "true")
public class RedissonConfig {
   
 
    @Value("${spring.redis.redisson.mode}")
    private String mode;
 
    /**
     * 仅仅用于sentinel模式。
     */
    @Value("${spring.redis.redisson.masterName:}")
    private String masterName;
 
    @Value("${spring.redis.redisson.address}")
    private String address;
 
    @Value("${spring.redis.redisson.password:}")
    private String password;
 
    /**
     * 数据库默认0
     */
    @Value("${spring.redis.redisson.database:0}")
    private Integer database;
 
    @Bean
    public RedissonClient redissonClient() {
   
        if (StringUtils.isBlank(password)) {
   
            password = null;
        }
        Config config = new Config();
        if ("single".equals(mode)) {
   
            config.useSingleServer()
                    .setDatabase(database)
                    .setPassword(password)
                    .setAddress(address);
        } else if ("cluster".equals(mode)) {
   
            String[] clusterAddresses = address.split(",");
            config.useClusterServers()
                    //集群模式不支持多个数据库概念,默认db 0
                    .setPassword(password)
                    .addNodeAddress(clusterAddresses);
        } else if ("sentinel".equals(mode)) {
   
            String[] sentinelAddresses = address.split(&#

网站公告

今日签到

点亮在社区的每一天
去签到