springboot 整合redisson

整合代码已经过测试

1、pom

1 <!-- redisson -->
2 <dependency>
3     <groupId>org.redisson</groupId>
4     <artifactId>redisson</artifactId>
5     <version>3.5.7</version>
6 </dependency>

2、properties

# redis
spring.redis.host=
spring.redis.port=
spring.redis.password=
spring.redis.jedis.pool.max-active=500
spring.redis.jedis.pool.max-idle=1000
spring.redis.jedis.pool.max-wait=6000ms
spring.redis.jedis.pool.min-idle=4

3、添加redisson配置类、这里是单机模式

 

 1 package com.example.common.config;
 2
 3 import org.redisson.Redisson;
 4 import org.redisson.api.RedissonClient;
 5 import org.redisson.config.Config;
 6 import org.springframework.beans.factory.annotation.Value;
 7 import org.springframework.context.annotation.Bean;
 8 import org.springframework.context.annotation.Configuration;
 9
10 /**
11  * redisson 配置类
12  * Created on 2018/6/19
13  */
14 @Configuration
15 public class RedissonConfig {
16
17     @Value("${spring.redis.host}")
18     private String host;
19
20     @Value("${spring.redis.port}")
21     private String port;
22
23     @Value("${spring.redis.password}")
24     private String password;
25
26     @Bean
27     public RedissonClient getRedisson(){
28
29         Config config = new Config();
30         config.useSingleServer().setAddress("redis://" + host + ":" + port).setPassword(password);
31         //添加主从配置
32 //        config.useMasterSlaveServers().setMasterAddress("").setPassword("").addSlaveAddress(new String[]{"",""});
33
34         return Redisson.create(config);
35     }
36
37 }

4、加入redisson 操作类(redissonService)

  1 package com.example.common.base;
  2
  3 import org.redisson.api.*;
  4 import org.redisson.config.Config;
  5 import org.springframework.beans.factory.annotation.Autowired;
  6 import org.springframework.stereotype.Service;
  7
  8 import java.io.IOException;
  9
 10 /**
 11  * redisson操作类
 12  */
 13 @Service("redissonService")
 14 public class RedissonService {
 15
 16     @Autowired
 17     private RedissonClient redissonClient;
 18
 19     public void getRedissonClient() throws IOException {
 20         Config config = redissonClient.getConfig();
 21         System.out.println(config.toJSON().toString());
 22     }
 23
 24     /**`
 25      * 获取字符串对象
 26      *
 27      * @param objectName
 28      * @return
 29      */
 30     public <T> RBucket<T> getRBucket(String objectName) {
 31         RBucket<T> bucket = redissonClient.getBucket(objectName);
 32         return bucket;
 33     }
 34
 35     /**
 36      * 获取Map对象
 37      *
 38      * @param objectName
 39      * @return
 40      */
 41     public <K, V> RMap<K, V> getRMap(String objectName) {
 42         RMap<K, V> map = redissonClient.getMap(objectName);
 43         return map;
 44     }
 45
 46     /**
 47      * 获取有序集合
 48      *
 49      * @param objectName
 50      * @return
 51      */
 52     public <V> RSortedSet<V> getRSortedSet(String objectName) {
 53         RSortedSet<V> sortedSet = redissonClient.getSortedSet(objectName);
 54         return sortedSet;
 55     }
 56
 57     /**
 58      * 获取集合
 59      *
 60      * @param objectName
 61      * @return
 62      */
 63     public <V> RSet<V> getRSet(String objectName) {
 64         RSet<V> rSet = redissonClient.getSet(objectName);
 65         return rSet;
 66     }
 67
 68     /**
 69      * 获取列表
 70      *
 71      * @param objectName
 72      * @return
 73      */
 74     public <V> RList<V> getRList(String objectName) {
 75         RList<V> rList = redissonClient.getList(objectName);
 76         return rList;
 77     }
 78
 79     /**
 80      * 获取队列
 81      *
 82      * @param objectName
 83      * @return
 84      */
 85     public <V> RQueue<V> getRQueue(String objectName) {
 86         RQueue<V> rQueue = redissonClient.getQueue(objectName);
 87         return rQueue;
 88     }
 89
 90     /**
 91      * 获取双端队列
 92      *
 93      * @param objectName
 94      * @return
 95      */
 96     public <V> RDeque<V> getRDeque(String objectName) {
 97         RDeque<V> rDeque = redissonClient.getDeque(objectName);
 98         return rDeque;
 99     }
100
101
102     /**
103      * 获取锁
104      *
105      * @param objectName
106      * @return
107      */
108     public RLock getRLock(String objectName) {
109         RLock rLock = redissonClient.getLock(objectName);
110         return rLock;
111     }
112
113     /**
114      * 获取读取锁
115      *
116      * @param objectName
117      * @return
118      */
119     public RReadWriteLock getRWLock(String objectName) {
120         RReadWriteLock rwlock = redissonClient.getReadWriteLock(objectName);
121         return rwlock;
122     }
123
124     /**
125      * 获取原子数
126      *
127      * @param objectName
128      * @return
129      */
130     public RAtomicLong getRAtomicLong(String objectName) {
131         RAtomicLong rAtomicLong = redissonClient.getAtomicLong(objectName);
132         return rAtomicLong;
133     }
134
135     /**
136      * 获取记数锁
137      *
138      * @param objectName
139      * @return
140      */
141     public RCountDownLatch getRCountDownLatch(String objectName) {
142         RCountDownLatch rCountDownLatch = redissonClient.getCountDownLatch(objectName);
143         return rCountDownLatch;
144     }
145
146     /**
147      * 获取消息的Topic
148      *
149      * @param objectName
150      * @return
151      */
152     public <M> RTopic<M> getRTopic(String objectName) {
153         RTopic<M> rTopic = redissonClient.getTopic(objectName);
154         return rTopic;
155     }
156 }

5.、测试代码

package com.example.test;

import com.example.common.base.RedissonService;
import org.redisson.api.RLock;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.concurrent.TimeUnit;

@Controller
@RequestMapping("test")
public class TestService {

    private static final Logger log = LoggerFactory.getLogger(TestService.class);

    @Autowired
    private RedissonService redissonService;

    @RequestMapping(value = "/test")
    @ResponseBody
    public void test(String recordId) {

        RLock lock = redissonService.getRLock(recordId);
        try {
            boolean bs = lock.tryLock(5, 6, TimeUnit.SECONDS);
            if (bs) {
                // 业务代码
                log.info("进入业务代码: " + recordId);

                lock.unlock();
            } else {
                Thread.sleep(300);
            }
        } catch (Exception e) {
            log.error("", e);
            lock.unlock();
        }
    }

}

原文地址:https://www.cnblogs.com/milicool/p/9201271.html

时间: 2024-11-01 23:41:13

springboot 整合redisson的相关文章

springboot整合redisson分布式锁

一.通过maven引入redisson的jar包 <dependency> <groupId>org.redisson</groupId> <artifactId>redisson</artifactId> <version>3.6.5</version> </dependency> 二.在yaml文件中引入redis的相关配置(redis单节点可以读取原有redis配置拼装,如果是主从需另外独立配置,相关属性

SpringBoot 2.SpringBoot整合Mybatis

一.创建Springboot的配置文件:application.properties SpringApplication 会从 application.properties 文件中加载配置信息,下面是添加Spring配置信息的文件目录顺序: 当前目录下的/config子目录中 当前目录中 一个 classpath 包下的 /config 目录中 classpath 根目录中 大家根据自己习惯来即可. /application.properties 文件配置如下: spring.datasourc

springboot学习笔记-6 springboot整合RabbitMQ

一 RabbitMQ的介绍 RabbitMQ是消息中间件的一种,消息中间件即分布式系统中完成消息的发送和接收的基础软件.这些软件有很多,包括ActiveMQ(apache公司的),RocketMQ(阿里巴巴公司的,现已经转让给apache). 消息中间件的工作过程可以用生产者消费者模型来表示.即,生产者不断的向消息队列发送信息,而消费者从消息队列中消费信息.具体过程如下: 从上图可看出,对于消息队列来说,生产者,消息队列,消费者是最重要的三个概念,生产者发消息到消息队列中去,消费者监听指定的消息

SpringBoot整合Quartz定时任务

记录一个SpringBoot 整合 Quartz 的Demo实例 POM.XML文件 <!-- 定时器任务 quartz需要导入的坐标 --> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>1.8.5</version> </dependency> 类似于控制

springboot系列-springboot整合RabbitMQ

一 RabbitMQ的介绍 RabbitMQ是消息中间件的一种,消息中间件即分布式系统中完成消息的发送和接收的基础软件.这些软件有很多,包括ActiveMQ(apache公司的),RocketMQ(阿里巴巴公司的,现已经转让给apache). 消息中间件的工作过程可以用生产者消费者模型来表示.即,生产者不断的向消息队列发送信息,而消费者从消息队列中消费信息.具体过程如下: 从上图可看出,对于消息队列来说,生产者,消息队列,消费者是最重要的三个概念,生产者发消息到消息队列中去,消费者监听指定的消息

springboot整合mybatis,freemarker

springboot 整合mybaits,,freemarker pom.xml文件 <?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=&

springboot整合mybatis(SSM开发环境搭建)

0.项目结构: 1.application.properties中配置整合mybatis的配置文件.mybatis扫描别名的基本包与数据源 server.port=80 logging.level.org.springframework=DEBUG #springboot mybatis #jiazai mybatis peizhiwenjian mybatis.mapper-locations = classpath:mapper/*Mapper.xml mybatis.config-loca

springboot 整合jdbcTemplate

springboot 整合jdbcTemplate 〇.搭建springboot环境(包括数据库的依赖) 一.添加依赖 如果导入了jpa的依赖,就不用导入jdbctemplete的依赖了jpa的依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency&g

SpringBoot系列十一:SpringBoot整合Restful架构(使用 RestTemplate 模版实现 Rest 服务调用、Swagger 集成、动态修改日志级别)

1.概念:SpringBoot整合Restful架构 2.背景 Spring 与 Restful 整合才是微架构的核心,虽然在整个 SpringBoot(SpringCloud)之中提供有大量的服务方便整合,但是这些 整合都不如 Rest 重要,因为 Rest 是整个在微架构之中进行通讯的基础模式.那么对于 Rest 首先必须对其有一个最为核心的解释: 利用 JSON 实现数据的交互处理.而且 Spring 里面提供有一个非常强大的 RestTemplate 操作模版,利用此模版可以非常轻松的实