开发者

SpringBoot集成redisson全过程

目录
  • SpringBoot集成Redisson
    • 1.首先需要已经集成redis的环境
    • 2.引入redisson的依赖
    • 3.添加redisson的配置类
    • 4.redisson的常见使用
  • 总结

    SpringBoot集成redisson

    1.首先需要已经集成redijavascripts的环境

    如何集成redis这里不做描述。

    2.引入redisson的依赖

    (这里使用的是3.14.1版本)

    <dependency>
         <groupId>org.redisson</groupId>
         <artifactId>redisson</artifactId>
         <vePhxLEXrsion>3.14.1</version>
     </dependency>

    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.http://www.devze.comcontext.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 !http://www.devze.com= password && !"".equals(password.trim())) {
                c编程客栈onfig.useSingleServer().setPassword(password);
            }
            return Redisson.create(config);
        }
    }

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

    SpringBoot集成redisson全过程

    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();
        }

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新开发

    开发排行榜