SpringBoot集成redisson

1.首先需要已经集成redis的环境,如何集成redis这里不做描述。

2.引入redisson的依赖。(这里使用的是3.14.1版本)


     org.redisson
     redisson
     3.14.1
 

3.添加redisson的配置类。

package com.salong.framework.config;

import lombok.Data;

import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Data
@Configuration
public class RedissonConfig {
    @Value("${spring.redis.host}")
    private String host;
    @Value("${spring.redis.port}")
    private String port;
    @Value("${spring.redis.password}")
    private String password;

    @Bean
    public RedissonClient getRedisSon() {
        Config config = new Config();
        String address = new StringBuilder("redis://").append(host).append(":").append(port).toString();
        config.useSingleServer().setAddress(address);
        if (null != password && !"".equals(password.trim())) {
            config.useSingleServer().setPassword(password);
        }
        return Redisson.create(config);
    }
}

其中,我这里使用的是单机的redis,如果是其他方式(主从,哨兵,集群)的话,按照下面的进行修改配置即可。

SpringBoot集成redisson_第1张图片

 4.redisson的常见使用。

  4.1  在类中注入redisson

    @Autowired
    private RedissonClient redissonClient;

4.2 获取锁对象和使用。

public void test(){
        //竞争的锁对象名称
        RLock lock = redissonClient.getLock("lockName");
        //tryLock可以不加参数,不会抛异常,仅尝试获取一次锁对象
        //tryLock(5,10,TimeUnit.SECONDS)意思为等待锁对象5秒钟,获取到对象10秒钟后释放锁对象,调用此方法会抛出异常
        if (lock.tryLock()){
            try {
                //处理业务逻辑代码......    
            }finally {
                lock.unlock();   
            }
        }
        //lock.isLocked()误区:此方法不是判断当前线程是否被锁定,而是判断该锁对象当前是否被任意线程所持有。
        // 所以不能使用if(lock.isLocked()){lock.unlock();}的写法来释放锁。
        boolean locked = lock.isLocked();
        //当前线程释放锁对象
        lock.unlock();
    }

你可能感兴趣的:(后端,redis,redisson,java)