Redis的应用——接口幂等性,分布式锁,基于注解+拦截器的接口幂等改进

本文介绍了如何在Spring应用中通过Redisson框架增强接口幂等性,以及如何使用注解和拦截器来处理分布式锁问题,同时探讨了缓存击穿、穿透和雪崩的解决方案,包括布隆过滤器和多级缓存策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

引出

Redis的应用——接口幂等性,分布式锁,基于注解+拦截器的接口幂等改进


接口幂等&分布式锁

系统的问题:

接口的幂等性:接口幂等性就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用;

@RestController
@RequestMapping("/order")
public class OrderController {
   
    private final RedisTemplate redisTemplate;
    public OrderController(RedisTemplate redisTemplate) {
   
        this.redisTemplate = redisTemplate;
    }
    @PostMapping("/make")
    public String makeOrder(OrderDto orderDto){
   
        if(redisTemplate.hasKey("ORDER_" + orderDto.getOrderNum())){
   
           return "请求已经处理,请勿重复提交!";
        }
        //setnx key value 做到:判断key是否存在,如果key则不能加入到redis中去,称为:redis的分布式锁
        redisTemplate.opsForValue().setIfAbsent("ORDER_" + orderDto.getOrderNum(), "",10, TimeUnit.MINUTES);
        //调用业务层:完成订单的创建
        System.out.println("orderDto = " + orderDto);
        return "ok";
    }
}

接口幂等性

if(redisTemplate.hasKey("ORDER_" + orderDto.getOrderNum())){
   
    return "请求已经处理,请勿重复提交!";
}

redis的分布锁,缺陷:业务如果超出了上锁的时间,可能会导致数据不准确

Redisson框架

Redisson框架:它是Redis的封装框架,提供了Redis的所有操作

<!--引入redis的封装框架redission-->
<dependency>
    <groupId>org.redisson</groupId>
    <artifactId>redisson-spring-boot-starter</artifactId>
    <version>3.10.0</version>
</dependency>

在这里插入图片描述

添加配置类:

@Configuration
public class RedissonConfig {
   
    @Autowired
    private Environment env;
    
    //解决redission 和 Springcache的兼容问题
    @Bean
    public RedisCacheManager cacheManager(RedisConnectionFactory connectionFactory) {
   
        RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig()
                .
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Arya's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值