redis实现接口幂等性
1. 说明
幂等性的概念:任意多次执行所产生得影响均与一次执行的影响相同,对数据库的影响只能是一次性的,不能重复处理。在实际项目中,在客户端没限制幂等性,重复调用接口,导致接口数据重复写入数据。
解决接口幂等性有多种方式,建立数据库唯一索引,乐观锁或悲观锁,程序先查询后判断,唯一标识机制等。本文介绍使用redis生成唯一标识来限制接口重复提交,实现接口幂等性。
redis实现流程图:
2. 实现
引入依赖
<!-- 使用springboot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.16</version>
</dependency>
yml文件配置
# 添加redis 配置
redis:
database: 1
host: 127.0.0.1
port: 6379
timeout: 6000ms # 连接超时时长(毫秒)
jedis:
pool:
max-active: 1000 # 连接池最大连接数
max-wait: -1ms # 连接池最大阻塞等待时间
max-idle: 10 # 连接池中的最大空闲连接
min-idle: 5 # 连接池中的最小空闲连接
redisUtil工具类
@Component
public class RedisUtil {
@Autowired
private RedisTemplate redisTemplate;
/**
* 写入缓存
*
* @param key
* @param value
* @return
*/
public boolean set(final String key, Object value) {
boolean<