From 425b36309fa47a32d20bca0421be796b0fb79155 Mon Sep 17 00:00:00 2001 From: liangjinglin Date: Sat, 5 Apr 2025 21:05:56 +0800 Subject: [PATCH] =?UTF-8?q?20250405=20=E7=A7=92=E6=9D=80=E6=B4=BB=E5=8A=A8?= =?UTF-8?q?+redis=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pom.xml | 17 ++++++++ .../liang/sca/goods/config/RedisConfig.java | 24 ++++++++++++ .../goods/controller/SecKillController.java | 39 +++++++++++++++++++ .../src/main/resources/application.yml | 13 ++++++- 4 files changed, 92 insertions(+), 1 deletion(-) create mode 100644 liang-springcloud-alibaba-goods-service/src/main/java/com/liang/sca/goods/config/RedisConfig.java create mode 100644 liang-springcloud-alibaba-goods-service/src/main/java/com/liang/sca/goods/controller/SecKillController.java diff --git a/liang-springcloud-alibaba-goods-service/pom.xml b/liang-springcloud-alibaba-goods-service/pom.xml index 6a45761..f61586b 100644 --- a/liang-springcloud-alibaba-goods-service/pom.xml +++ b/liang-springcloud-alibaba-goods-service/pom.xml @@ -48,5 +48,22 @@ mysql-connector-java 8.0.33 + + + + org.springframework.boot + spring-boot-starter-data-redis + + + + io.lettuce + lettuce-core + + + + org.apache.commons + commons-pool2 + 2.11.1 + diff --git a/liang-springcloud-alibaba-goods-service/src/main/java/com/liang/sca/goods/config/RedisConfig.java b/liang-springcloud-alibaba-goods-service/src/main/java/com/liang/sca/goods/config/RedisConfig.java new file mode 100644 index 0000000..7da9dca --- /dev/null +++ b/liang-springcloud-alibaba-goods-service/src/main/java/com/liang/sca/goods/config/RedisConfig.java @@ -0,0 +1,24 @@ +package com.liang.sca.goods.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer; +import org.springframework.data.redis.serializer.StringRedisSerializer; + +@Configuration +public class RedisConfig { + + @Bean + public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) { + RedisTemplate template = new RedisTemplate<>(); + template.setConnectionFactory(redisConnectionFactory); + template.setKeySerializer(new StringRedisSerializer()); + template.setValueSerializer(new GenericJackson2JsonRedisSerializer()); + template.setHashKeySerializer(new StringRedisSerializer()); + template.setHashValueSerializer(new GenericJackson2JsonRedisSerializer()); + template.afterPropertiesSet(); + return template; + } +} diff --git a/liang-springcloud-alibaba-goods-service/src/main/java/com/liang/sca/goods/controller/SecKillController.java b/liang-springcloud-alibaba-goods-service/src/main/java/com/liang/sca/goods/controller/SecKillController.java new file mode 100644 index 0000000..2bbf106 --- /dev/null +++ b/liang-springcloud-alibaba-goods-service/src/main/java/com/liang/sca/goods/controller/SecKillController.java @@ -0,0 +1,39 @@ +package com.liang.sca.goods.controller; + +import com.liang.sca.goods.mapper.GoodsInfoMapper; +import com.liang.sca.goods.model.GoodsInfo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/seckill") +public class SecKillController { + + @Autowired + private RedisTemplate redisTemplate; + + @Autowired + private GoodsInfoMapper goodsInfoMapper; + + /** + * 创建秒杀活动 + * @param id 商品信息表的主键 ID + * @return 操作结果信息 + */ + @RequestMapping("/create/{id}") + public String createSecKillActivity(@PathVariable int id) { + // 根据 id 查询 tb_goods_info 表 + GoodsInfo goodsInfo = goodsInfoMapper.selectById(id); + if (goodsInfo == null) { + return "商品信息不存在"; + } + // 以 goodsId 为 key,将库存放入 redis 中 + String key = "seckill:goods:" + goodsInfo.getGoodsId(); + redisTemplate.opsForValue().set(key, goodsInfo.getGoodsStore()); + return "秒杀活动创建成功"; + } +} diff --git a/liang-springcloud-alibaba-goods-service/src/main/resources/application.yml b/liang-springcloud-alibaba-goods-service/src/main/resources/application.yml index 85022df..ee65e23 100644 --- a/liang-springcloud-alibaba-goods-service/src/main/resources/application.yml +++ b/liang-springcloud-alibaba-goods-service/src/main/resources/application.yml @@ -14,4 +14,15 @@ spring: driver-class-name: com.mysql.cj.jdbc.Driver jackson: serialization: - FAIL_ON_EMPTY_BEANS: false \ No newline at end of file + FAIL_ON_EMPTY_BEANS: false + redis: + host: 154.12.80.119 + port: 6379 + database: 0 + password: 123456 + lettuce: + pool: + max-active: 8 + max-wait: -1ms + max-idle: 8 + min-idle: 0 \ No newline at end of file