对比新文件 |
| | |
| | | package com.iailab.framework.idempotent.core.redis; |
| | | |
| | | import lombok.AllArgsConstructor; |
| | | import org.springframework.data.redis.core.StringRedisTemplate; |
| | | |
| | | import java.util.concurrent.TimeUnit; |
| | | |
| | | /** |
| | | * 幂等 Redis DAO |
| | | * |
| | | * @author iailab |
| | | */ |
| | | @AllArgsConstructor |
| | | public class IdempotentRedisDAO { |
| | | |
| | | /** |
| | | * 幂等操作 |
| | | * |
| | | * KEY 格式:idempotent:%s // 参数为 uuid |
| | | * VALUE 格式:String |
| | | * 过期时间:不固定 |
| | | */ |
| | | private static final String IDEMPOTENT = "idempotent:%s"; |
| | | |
| | | private final StringRedisTemplate redisTemplate; |
| | | |
| | | public Boolean setIfAbsent(String key, long timeout, TimeUnit timeUnit) { |
| | | String redisKey = formatKey(key); |
| | | return redisTemplate.opsForValue().setIfAbsent(redisKey, "", timeout, timeUnit); |
| | | } |
| | | |
| | | public void delete(String key) { |
| | | String redisKey = formatKey(key); |
| | | redisTemplate.delete(redisKey); |
| | | } |
| | | |
| | | private static String formatKey(String key) { |
| | | return String.format(IDEMPOTENT, key); |
| | | } |
| | | |
| | | } |