ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

转载-springboot 整合redisson

2021-12-15 18:00:19  阅读:166  来源: 互联网

标签:redisson return springboot objectName org import 转载 public String


https://www.cnblogs.com/milicool/p/9201271.html

 

整合代码已经过测试

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

}
复制代码

 

标签:redisson,return,springboot,objectName,org,import,转载,public,String
来源: https://www.cnblogs.com/lzh1043060917/p/15693945.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有