From e778f1ec4f911e0b6332432edca4650461ce5870 Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期二, 19 八月 2025 17:00:41 +0800 Subject: [PATCH] 修改redis锁 --- user/guns-admin/pom.xml | 14 +------ user/guns-admin/src/main/java/com/supersavedriving/user/config/RedissonConfig.java | 28 ++++++++++++++ user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java | 23 +++-------- user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/RedisUtil.java | 12 +---- 4 files changed, 39 insertions(+), 38 deletions(-) diff --git a/user/guns-admin/pom.xml b/user/guns-admin/pom.xml index 27c4661..7ed4d5b 100644 --- a/user/guns-admin/pom.xml +++ b/user/guns-admin/pom.xml @@ -67,10 +67,9 @@ </dependency> <dependency> <groupId>org.redisson</groupId> - <artifactId>redisson-spring-boot-starter</artifactId> - <version>3.16.8</version> + <artifactId>redisson</artifactId> + <version>3.14.0</version> </dependency> - <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> @@ -143,15 +142,6 @@ <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt</artifactId> - </dependency> - <dependency> - <groupId>redis.clients</groupId> - <artifactId>jedis</artifactId> - <version>2.9.0</version> - </dependency> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>cn.jpush.api</groupId> diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/config/RedissonConfig.java b/user/guns-admin/src/main/java/com/supersavedriving/user/config/RedissonConfig.java new file mode 100644 index 0000000..b419b62 --- /dev/null +++ b/user/guns-admin/src/main/java/com/supersavedriving/user/config/RedissonConfig.java @@ -0,0 +1,28 @@ +package com.supersavedriving.user.config; + +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.context.annotation.Configuration; + +@Configuration +public class RedissonConfig { + + @Value("${spring.redis.host}") + private String host; + @Value("${spring.redis.password}") + private String password; + @Value("${spring.redis.port}") + private Integer port; + + + @Bean + public RedissonClient redissonClient() { + Config config = new Config(); + config.useSingleServer().setAddress("redis://" + host + ":" + port); + config.useSingleServer().setPassword(password); + return Redisson.create(config); + } +} diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java index b7090e1..5e418be 100644 --- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java +++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java @@ -440,7 +440,7 @@ @Override public ResultUtil travelOrder(Integer uid, TravelOrder travelOrder) throws Exception { RLock lock1 = redissonClient.getLock("travelOrder:" + uid); - boolean lock2 = lock1.tryLock(5, TimeUnit.SECONDS); + boolean lock2 = lock1.tryLock(5, 10, TimeUnit.SECONDS); if(!lock2){ return ResultUtil.error("系统繁忙,请稍后重试"); } @@ -568,6 +568,7 @@ * 订单推送逻辑 */ public void pushOrder(Long orderId){ + RLock lock1 = redissonClient.getLock("pushOrder:" + orderId); try { Order order = this.selectById(orderId); /** @@ -577,20 +578,8 @@ * 合适司:积分 > 评分 > 距离 * 3.司机没有接单直接将订单置入大厅 */ - boolean lock = redisUtil.lock(5); - if(!lock){ - int num1 = 1; - while (num1 <= 10){ - Thread.sleep(3000);//等待3秒 - lock = redisUtil.lock(5); - if(lock){ - break; - }else{ - num1++; - } - } - } - if(!lock){ + boolean lock2 = lock1.tryLock(5, 10, TimeUnit.SECONDS); + if(!lock2){ order.setHallOrder(1); this.updateById(order); ExtraPushOrder(order); @@ -786,10 +775,10 @@ ExtraPushOrder(order); redisUtil.setStrValue("lobbyOrder", "true"); } - redisUtil.unlock(); }catch (Exception e){ e.printStackTrace(); - redisUtil.unlock(); + }finally { + lock1.unlock(); } } diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/RedisUtil.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/RedisUtil.java index 0e30250..3575b14 100644 --- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/RedisUtil.java +++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/RedisUtil.java @@ -1,17 +1,10 @@ package com.supersavedriving.user.modular.system.util; -import com.supersavedriving.user.core.util.ToolUtil; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; -import org.springframework.util.StringUtils; -import redis.clients.jedis.Jedis; -import redis.clients.jedis.JedisPool; -import redis.clients.jedis.Pipeline; import javax.annotation.Resource; -import java.io.IOException; -import java.util.*; +import java.util.UUID; import java.util.concurrent.TimeUnit; @@ -103,7 +96,7 @@ int num1 = 1; while (num1 <= 10){ try { - Thread.sleep(3000);//等待3秒 + Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } @@ -119,6 +112,7 @@ return b; }catch (Exception e){ e.printStackTrace(); + }finally { unlock(); } return false; -- Gitblit v1.7.1