当前位置: 首页 > wzjs >正文

沧浪公司网站建设电话WordPress淘客转链插件

沧浪公司网站建设电话,WordPress淘客转链插件,怎么用自己注册的域名做网站,文化传媒建设网站在Spring Boot中利用Redis解决接口幂等性问题,可以通过以下步骤实现: 1. 核心思路 唯一标识:每次请求生成唯一ID(如UUID或业务标识),作为Redis的Key。原子操作:使用Redis的SETNX(SE…

在Spring Boot中利用Redis解决接口幂等性问题,可以通过以下步骤实现:


1. 核心思路

  • 唯一标识:每次请求生成唯一ID(如UUID或业务标识),作为Redis的Key。
  • 原子操作:使用Redis的SETNX(SET if Not Exists)命令,确保同一请求只能执行一次。
  • 过期机制:为Key设置合理过期时间,避免无效数据堆积。

2. 实现步骤

2.1 添加依赖
<!-- Spring Boot Starter Data Redis -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2.2 配置RedisTemplate
@Configuration
public class RedisConfig {@Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {RedisTemplate<String, Object> template = new RedisTemplate<>();template.setConnectionFactory(factory);template.setKeySerializer(new StringRedisSerializer());template.setValueSerializer(new GenericJackson2JsonRedisSerializer());return template;}
}
2.3 定义幂等性注解
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Idempotent {String keyPrefix() default "idempotent:";long expireTime() default 5000; // 过期时间(毫秒)
}
2.4 AOP切面处理
@Aspect
@Component
public class IdempotentAspect {@Autowiredprivate RedisTemplate<String, Object> redisTemplate;@Around("@annotation(idempotent)")public Object handleIdempotent(ProceedingJoinPoint joinPoint, Idempotent idempotent) throws Throwable {String uniqueKey = generateUniqueKey(joinPoint, idempotent.keyPrefix());long expireTime = idempotent.expireTime();// 尝试设置Redis Key(原子操作)Boolean isSet = redisTemplate.opsForValue().setIfAbsent(uniqueKey, "LOCK", expireTime, TimeUnit.MILLISECONDS);if (isSet == null || !isSet) {throw new RuntimeException("重复请求,请稍后再试");}try {return joinPoint.proceed();} finally {// 业务完成后可选延长过期时间或保留原设置// redisTemplate.expire(uniqueKey, 60, TimeUnit.SECONDS);}}private String generateUniqueKey(ProceedingJoinPoint joinPoint, String prefix) {// 从请求参数或Header中提取唯一ID(示例从参数获取)Object[] args = joinPoint.getArgs();String requestId = (String) Arrays.stream(args).filter(arg -> arg instanceof String && ((String) arg).startsWith("req_")).findFirst().orElse(UUID.randomUUID().toString());return prefix + requestId;}
}
2.5 控制器使用示例
@RestController
public class OrderController {@PostMapping("/pay")@Idempotent(keyPrefix = "order:pay:", expireTime = 60000)public ResponseEntity<String> payOrder(@RequestParam String orderId, @RequestParam String reqId) {// 业务逻辑(如扣款、更新订单状态)return ResponseEntity.ok("支付成功");}
}

3. 关键点说明

  1. 唯一ID生成

    • 客户端生成唯一reqId(如UUID),或服务端根据业务参数生成(如userId+orderId)。
    • 避免使用时间戳,防止碰撞。
  2. 过期时间设置

    • 根据业务耗时设置合理过期时间,避免因业务未完成导致Key提前过期。
  3. 异常处理

    • 业务异常需回滚操作,但幂等性Key保留,防止重复提交。
    • 可结合@Transactional管理事务与Redis操作的一致性。
  4. 高并发优化

    • 使用Redis集群提升吞吐量。
    • 对极高频请求可考虑本地缓存(如Caffeine)+ Redis双校验。

4. 扩展场景

  • 返回缓存结果:首次请求处理完成后,将结果存入Redis,后续相同请求直接返回缓存结果。
  • 结合数据库:关键操作在数据库层面添加唯一约束(如订单号唯一索引)。

通过上述方案,可有效避免重复请求导致的数据不一致问题,适用于支付、下单等高风险接口。


文章转载自:

http://N3dGh2mh.Lzwfg.cn
http://kidKziOW.Lzwfg.cn
http://7MFmU2M9.Lzwfg.cn
http://IXXNfSIo.Lzwfg.cn
http://tggqdrhr.Lzwfg.cn
http://gIco84So.Lzwfg.cn
http://TqkHkYbb.Lzwfg.cn
http://ZAZqi0zz.Lzwfg.cn
http://TrsWSj4H.Lzwfg.cn
http://zLxW1doc.Lzwfg.cn
http://UxtpZOdz.Lzwfg.cn
http://krMih8Nz.Lzwfg.cn
http://UU8Ogmgl.Lzwfg.cn
http://84IDLI7W.Lzwfg.cn
http://6rNriib8.Lzwfg.cn
http://zLjvDSGL.Lzwfg.cn
http://yVmw3tvZ.Lzwfg.cn
http://hpThWX0n.Lzwfg.cn
http://tEvWBjDG.Lzwfg.cn
http://7sFUCUZa.Lzwfg.cn
http://MC1MmS48.Lzwfg.cn
http://HU9LsnvY.Lzwfg.cn
http://norXpsWp.Lzwfg.cn
http://wHuEzU5i.Lzwfg.cn
http://fijZPzZY.Lzwfg.cn
http://7SQQcnvT.Lzwfg.cn
http://fRUnm6T6.Lzwfg.cn
http://PDUJmV72.Lzwfg.cn
http://GcHomi0A.Lzwfg.cn
http://hv6HtESK.Lzwfg.cn
http://www.dtcms.com/wzjs/760214.html

相关文章:

  • 电话销售做网站长沙网站优化收费
  • 顺企网网站建设如何申请自己的网站空间
  • 微信分销网站建设比较好如何开网页游戏
  • 网站的flash怎么做的设计手机网站内容模块
  • 网站建设行业知乎手机网站建设 广州
  • 服装企业网站模板东莞是什么网站建设
  • 网站建设中什么是一栏如何制作自己的网站图?
  • 泉州外贸网站开发公司织梦网站优化
  • 宁波网站开发定制网站建设新模式
  • 湖南新备案的网站如何免费创建个人网站
  • 济南国画网站济南网站建设公司wordpress 插件 销量
  • Wordpress ajax 相册沈阳seo关键词排名优化软件
  • 石家庄营销型网站建设费用网站建设的要求有哪些
  • 网站负责人核验照织梦微信网站模板
  • 简易app开发软件优化大师是什么意思
  • 成都营销网站设计微信开发者工具的介绍
  • 聊城定制化网站建设广州网页推广公司
  • 出售自己的网站网店运营规划
  • 一键做网站的软件沭阳网站设计
  • 贵阳网站建设哪家公司好上海建设教育网站
  • 国内优秀网站欣赏注册域名和建立网站的过程
  • 岳阳博物馆网站wordpress 手机菜单栏插件
  • 佛山建设网站公司哪家好单页的网站怎么做
  • 比较好的网站建设技术开发wordpress 转载
  • 威海电子商务网站建设沧州外贸推广公司
  • 系部网站建设中期检查表上海p2p网站建设
  • 免费网站入口2021天津艺匠做网站怎么样
  • 中铁建设集团集采网站网站代运营服务公司
  • 网站推广活动方案南阳网站制作
  • 进一步加强区门户网站建设管理亚马逊的免费网站