Redisson封装及应用实例

本文介绍了如何在Spring Boot项目中配置Redisson客户端,展示了实现加锁与释放的示例,并将这些功能封装到工具类中,便于后续业务调用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

配置类

实现加锁与释放

封装为工具类

调用实例


配置类

  RedissonClient 核心实现及运行参数配置

package com.otc.mall.redisson;

import java.lang.reflect.Method;

import javax.annotation.PostConstruct;

import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.data.redis.RedisProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.util.ReflectionUtils;

import com.otc.mall.redisson.config.RedissonLockProperties;

import lombok.extern.slf4j.Slf4j;

/**
 * Redisson 自动装配配置类
 * 
 * @author linlin.dong
 * @Date 2022年5月31日 上午9:50:35
 * @version 1.0
 */
@Slf4j
@ConditionalOnClass(Redisson.class) // 条件装配
@Configuration
@EnableConfigurationProperties({ RedisProperties.class, RedissonLockProperties.class })

public class RedissonConfiguration {
    
    private final static String REDIS_PROTOCOL_PREFIX  = "redis://";
    
    private final static String REDISS_PROTOCOL_PREFIX = "rediss://";
    
    @Autowired
    private RedisProperties     redisProperties;
    
    @Value("${opentide.redisson.timeout:300}")
    private int                 timeout;
    
    @PostConstruct
    public void postConstruct() {
        log.info(" Starter [RedissionClient Starter] Auto Configure.");
    }
    
    @Bean
    public RedissonClient redissonClient() {
        
        /**
         * 运行模式 useSingleServer: 单机模式 useMasterSlaveServers: 主从模式 useSentinelServers: 哨兵模式 useClusterServers:集群模式
         */
        
        Config config = new Config();
        String prefix = REDIS_PROTOCOL_PREFIX;
        Method method = ReflectionUtils.findMethod(RedisProperties.class, "isSsl");
        if (method != null && (Boolean) ReflectionUtils.invokeMethod(method, redisProperties)) {
            prefix = REDISS_PROTOCOL_PREFIX;
        }
        config.useSingleServer().setAddress(prefix + redisProperties.getHost() + ":" + redisProperties.getPort())
                .setConnectTimeout(timeout).setDatabase(redisProperties.getDatabase())
                .setPassword(redisProperties.getPassword());
        return Redisson.create(config);
    }
}
package com.otc.mall.redisson.config;

import java.util.concurrent.TimeUnit;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframewor
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值