使用redisson实现分布式秒杀功能

redisson相比原生的jredis具有排队的功能,不一致秒杀时,一时获取锁失败就返回失败。

秒杀的原理就是使用redis的分布式锁的功能,保证每次抢购不会出现超卖的情况

1 引入pom

org.redissonredisson3.16.8

2 完整代码及解析如下

package htmdemo;import com.ruoyi.common.core.redis.RedisCache;import org.redisson.api.RLock;import org.redisson.api.RedissonClient;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;import java.util.ArrayList;import java.util.concurrent.*;/** * 使用redisson来实现分布式的秒杀功能 * @author Administrator * */@Componentpublic class ReddisonTest {@Autowiredprivate RedisCache redisCache;@AutowiredRedissonClient redissonClient;/** * 秒杀 * @throws ExecutionException * @throws InterruptedException */public void secondkill() throws ExecutionException, InterruptedException { //加锁的实现方式ExecutorService exec = Executors.newFixedThreadPool(50);ArrayList futures = new ArrayList();RLock stockLock = redissonClient.getLock(“stockLock”);for (int i = 0; i {int doneCount = 0;//初始化做的任务为0if(numLock.tryLock(1,1,TimeUnit.SECONDS)){//获取到锁,则做业务/** * trylock(param1,param2,param3):尝试获取锁 * @param1:等待时间(在这个时间内不停获取锁) * @param2:获取成功后锁的有效时间 * @param3:时间单位(秒/分/…)*/int stock = redisCache.getCacheObject(“stock”);stock–;redisCache.setCacheObject(“stock”, stock);doneCount++;//isHeldByCurrentThread()的作用是查询当前线程是否保持此锁定if(numLock.isHeldByCurrentThread()){numLock.unlock();}}return doneCount;});futures.add(fsubmit);}Integer saleToal = 0;for (int i = 0; i < futures.size(); i++) {Future count = futures.get(i);saleToal = saleToal + count.get();}System.out.println("最终的卖出:"+saleToal);}}

以上的核心代码为

//得到锁对象RLock stockLock = redissonClient.getLock(“stockLock”);//尝试获取锁if(numLock.tryLock(1,1,TimeUnit.SECONDS))

郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
(0)
用户投稿
上一篇 2022年9月4日
下一篇 2022年9月4日

相关推荐

  • 夜读|人生建议:不要浪费你的情绪

    来源:念念沐心 作者:念念 编辑:王珂(实习) 文章已获转载授权,如需转载请联系原账号授权 1 你有没有过这样的经历: 越是感觉有人不喜欢自己,就越容易受其影响。 有时候,人家只是…

    2022年5月6日
  • 分布式数据库:如何正确选择分片键?

    我们知道分布式数据库是将数据打散到不同节点上存储,从而提升性能与可靠性。那么今天我们来看看在分布式数据库中,一个非常重要的设计:正确地把数据分片,充分发挥分布式数据库架构的优势。 …

    2022年6月20日
  • 有钱人跟没钱人他们的区别在什么地方?

    1、有钱人比较自信,有底气,从来不会自卑。没钱的人没什么底气,一直都很自卑。 2、有钱的人气场强大,有一种独特的气质,即使他们穿拖鞋出门,都会让人觉得有个性。没钱的人没什么气场,在…

    2022年4月12日
  • 旅游舆情监测系统有哪些功能?

    近年来,随着人们生活水平的不断提高,民众的旅游热情不断高涨,特别是每逢节假日,各大景区人满为患。鉴于资源和服务的局限性,各种旅游负面舆情频频爆出,引发一场场旅游舆情危机。旅游业因其…

    2022年8月23日
  • 有效护肤和无效护肤的区别,花一样的时间做护肤,效果更好

    女生必知护肤小知识,为什么你勤快护肤,皮肤的状况却有时候还比不上不认真护肤的姐妹呢?每天各种各样的皮肤管理,用着大牌护肤品,到美容院护理,但皮肤依旧暗沉,痘痘,粗糙,闺蜜涂涂抹抹皮…

    2022年8月24日
  • 精致女生睡前必做的15件小事

    1、睡前三小时内不喝水,防止第二天水肿。 2、晚上睡觉前用热水泡脚,有助于促进身体血液循环加速新陈代谢,从而维护肝脏肾脏等多个部位正常运行,还能消除身体水肿。 3、彻底卸妆,只涂防…

    2022年6月26日
  • 地球变得更热了,留给人类改变气候的时间不多了,能够成功吗?

    每年到了夏季,全球变暖就会成为人们不断热议的话题,同时,科学家给出的警告也越来越严重,大量的气候数据显示,地球的气候变化越来越严峻,留给人类改变气候的时间不多了。 全球变暖会引发各…

    2022年8月17日
  • CD爱好者的福音!现在,你有更好的选择

    相信许多80后的音乐爱好者都曾经拥有过一台CD播放机,它曾见证了一代人的成长。现如今再次品味起纯正浓厚的CD声,只觉得温暖醇厚的人声中蕴藏着岁月的故事,浪漫壮丽的交响乐中流动着欢快…

    2022年7月2日
  • 旺夫体质的谢娜,不仅旺了张杰,还有刘烨

    谢娜的性格虽然大大咧咧,但对感情却非常认真,与刘烨相恋6年,和张杰结婚已有11年。 并且两个男人都是与谢娜在一起后,才迎来了事业上的爆红。 2000年,22岁的刘烨与19岁的谢娜因…

    2022年5月13日
  • 穿靴子的猫到底为什么要穿靴子?从动物角色看传统童话的教化功能

    如今我们谈到儿童文学作品时会更看重它们的文学性与艺术性,但如果考古早期给儿童看的童话故事,就会看到它们大多还是很强调故事的教化功能的。1697年,法国作家夏尔·佩罗就在他编写的每一…

    2022年8月19日

联系我们

联系邮箱:admin#wlmqw.com
工作时间:周一至周五,10:30-18:30,节假日休息