您当前的位置: 首页 >  redis

qq_34412985

暂无认证

  • 0浏览

    0关注

    1061博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

分布式锁Redisson实战(一)RedisUtils工具类和maven坐标

qq_34412985 发布时间:2021-01-30 17:25:31 ,浏览量:0

前言:分布式环境有很多问题,比如你前一个请求访问的是服务器A,第二个请求访问到了服务器B,就会发生并发重复插入问题,这个时候需要依赖单点来实现分布锁,而redis就是。

先导入maven依赖  redission

                           org.redisson                 redisson                 2.2.13            

package com.*.data.busisystem;

import org.redisson.Config; import org.redisson.Redisson; import org.redisson.RedissonClient; import org.redisson.SingleServerConfig; import org.redisson.core.RAtomicLong; import org.redisson.core.RBucket; import org.redisson.core.RCountDownLatch; import org.redisson.core.RDeque; import org.redisson.core.RList; import org.redisson.core.RLock; import org.redisson.core.RMap; import org.redisson.core.RQueue; import org.redisson.core.RSet; import org.redisson.core.RSortedSet; import org.redisson.core.RTopic; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @Component public class RedisUtils {        private static   Logger logger= LoggerFactory.getLogger(RedisUtils.class);  //       private static RedisUtils redisUtils;        public RedissonClient redisson = null;        @Autowired        private RedisUtils(@Value("${spring.redis.host}") String redisHost,@Value("${spring.redis.port}") String redisPort,@Value("${spring.redis.password:}") String redisPassword){            Config config = new Config();             SingleServerConfig singleSerververConfig = config.useSingleServer();             singleSerververConfig.setAddress(redisHost+":"+redisPort);             singleSerververConfig.setPassword(redisPassword);             redisson=Redisson.create(config);             logger.info("成功连接Redis Server");        }                /**         * 提供单例模式         * @return         */        /*public static RedisUtils getInstance(){           if(redisUtils==null)              synchronized (RedisUtils.class) {                 if(redisUtils==null) redisUtils=new RedisUtils();              }           return redisUtils;        }*/                        /**         * 使用config创建Redisson         * Redisson是用于连接Redis Server的基础类         * @param config         * @return         */        public RedissonClient getRedisson(Config config){           RedissonClient redisson=Redisson.create(config);           logger.info("成功连接Redis Server");           return redisson;        }        public RedissonClient getRedisson(){            RedissonClient redisson=this.redisson;            return redisson;        }                /**         * 使用ip地址和端口创建Redisson         * @param ip         * @param port         * @return         */        public RedissonClient getRedisson(String ip,String port){           Config config=new Config();           config.useSingleServer().setAddress(ip+":"+port);           RedissonClient redisson=Redisson.create(config);           logger.info("成功连接Redis Server"+"\t"+"连接"+ip+":"+port+"服务器");           return redisson;        }                /**         * 关闭Redisson客户端连接         * @param redisson         */        public void closeRedisson(RedissonClient redisson){           redisson.shutdown();           logger.info("成功关闭Redis Client连接");        }                /**         * 获取字符串对象         * @param redisson         * @param objectName         * @return         */        public RBucket getRBucket(String objectName){           RBucket bucket=redisson.getBucket(objectName);           return bucket;        }                /**         * 获取Map对象         * @param redisson         * @param objectName         * @return         */        public RMap getRMap(String objectName){           RMap map=redisson.getMap(objectName);           return map;        }                /**         * 获取有序集合         * @param redisson         * @param objectName         * @return         */        public RSortedSet getRSortedSet(String objectName){           RSortedSet sortedSet=redisson.getSortedSet(objectName);           return sortedSet;        }                /**         * 获取集合         * @param redisson         * @param objectName         * @return         */        public RSet getRSet(String objectName){           RSet rSet=redisson.getSet(objectName);           return rSet;        }                /**         * 获取列表         * @param redisson         * @param objectName         * @return         */        public RList getRList(String objectName){           RList rList=redisson.getList(objectName);           return rList;        }                /**         * 获取队列         * @param redisson         * @param objectName         * @return         */        public RQueue getRQueue(String objectName){           RQueue rQueue=redisson.getQueue(objectName);           return rQueue;        }                /**         * 获取双端队列         * @param redisson         * @param objectName         * @return         */        public RDeque getRDeque(String objectName){           RDeque rDeque=redisson.getDeque(objectName);           return rDeque;        }                /**         * 此方法不可用在Redisson 1.2 中         * 在1.2.2版本中 可用         * @param redisson         * @param objectName         * @return         */        /**        public RBlockingQueue getRBlockingQueue(String objectName){           RBlockingQueue rb=redisson.getBlockingQueue(objectName);           return rb;        }*/                /**         * 获取锁         * @param redisson         * @param objectName         * @return         */        public RLock getRLock(String objectName){           RLock rLock=redisson.getLock(objectName);           return rLock;        }                /**         * 获取原子数         * @param redisson         * @param objectName         * @return         */        public RAtomicLong getRAtomicLong(String objectName){           RAtomicLong rAtomicLong=redisson.getAtomicLong(objectName);           return rAtomicLong;        }                /**         * 获取记数锁         * @param redisson         * @param objectName         * @return         */        public RCountDownLatch getRCountDownLatch(String objectName){           RCountDownLatch rCountDownLatch=redisson.getCountDownLatch(objectName);           return rCountDownLatch;        }                /**         * 获取消息的Topic         * @param redisson         * @param objectName         * @return         */        public RTopic getRTopic(String objectName){            RTopic rTopic=redisson.getTopic(objectName);            return rTopic;        } }

 

关注
打赏
1653291990
查看更多评论
立即登录/注册

微信扫码登录

0.0427s