推荐一种非侵入式幂等性的Java实现

JUnit4测试重试策略:告别Flaky Test,提升CI/CD稳定性 在软件工程实践中,测试自动化是保障代码质量的核心环节,而测试稳定性直接决定了持续集成/持续部署(CI/CD)流程的效率与可靠性。其基本原理在于通过封装测试执行逻辑,在预设条件下自动重试失败的测试用例,从而过滤掉因环境波动、资源竞争等非确定性因素导致的偶发失败。这一技术的核心价值在于显著降低"Flaky Test"(不稳定测试)对开发流程的干扰,提升团队对自动化测试结果的信任度。典型的应用场景包括微服务架构下的集成测试、依赖外部服务或数据库的测试用例等。本文聚焦于JUnit4框架,深入探讨如何基于TestRu 阅读详情

点击上方“芋道源码”,选择“设为星标”

管她前浪,还是后浪?

能浪的浪,才是好浪!

每天 10:33 更新文章,每天掉亿点点头发...

源码精品专栏

 

来源:juejin.cn/post/

7085944825085689864


幂等性

今天我们来谈谈什么是幂等性?

引用百度百科的解析如下:

❝

幂等(idempotent、idempotence)是一个数学与计算机学概念,常见于抽象代数中。

在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。例如,“setTrue()”函数就是一个幂等函数,无论多次执行,其结果都是一样的.更复杂的操作幂等保证是利用唯一交易号(流水号)实现。

❞

这解析,确实有点长了,大家话看看就行了!!!(●'◡'●)

那对于我们程序员来说,我们关心的更多是下面这些问题:

❝

什么地方,什么场景下需要用到幂等?

幂等,我们需要怎么做,如何实现幂等呢?

❞

a4cf89467e7f7c63f8334a208b820d91.jpeg
如何实现幂等呢

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/ruoyi-vue-pro

  • 视频教程:https://doc.iocoder.cn/video/

什么场景下需要用到幂等

  • 前端表单重复提交问题

  • 用户订单支付问题

  • 银行业务办理取号问题

  • 用户恶意进行调接口问题

  • 接口超时重复提交问题

  • MQ消息进行重复消费

  • ...

当然了,还有很多场景会用到幂等,这里咱们就不一一列举出来了。

那我们要如何设计一个幂等功能呢,而且还是代码非侵入式?

代码非侵入式的意思,就是,我们的业务逻辑代码,不需要处理幂等校验的逻辑。

业务功能不处理?那交给谁处理呢?别着急,听哥们一一道来。^_^

6b07fd27069a0eecb8dbeba39612b89e.jpeg
业务功能不处理?

这里,要实现代码非侵入式的幂等校验,我们就要使用到切面编程了(@Aspect)

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/yudao-cloud

  • 视频教程:https://doc.iocoder.cn/video/

幂等的实现原理

在系统中一些接口需要增加幂等处理,幂等的概念是一个业务请求只能执行一次。类似银行业务办理,首先需要取一个号,然后用户使用这个号去柜台办理业务。这个号只能使用一次,如果过期或者已办理这个号就无效了。

我们的幂等也是使用这种原理。

❝

  • 1.首先客户端调用通过我们的系统获取一个号,我们称之为幂等号,这个号已经存在我们的系统中。

  • 2.客户端使用这个号,调用我们的接口。

  • 3.我们系统判断这个号在我们的系统中已经存在,如果存在则允许业务办理,如果不存在,则表示这是一个非法的号,我们直接抛出异常。

  • 4.当业务处理完成,我们会将这个号从我们的系统中删除掉。

❞

好了,这实现步骤,也是十分清晰了呀!!!^_^

那么我们下面就来看代码如何实现了

幂等的代码实现

  • 定义一个幂等处理接口

public interface Idempotence {
    /**
     * 检查是否存在幂等号
     * @param idempotenceId 幂等号
     * @return 是否存在
     */
    boolean check(String idempotenceId);

    /**
     * 记录幂等号
     * @param idempotenceId 幂等号
     */
    void record(String idempotenceId);

    /**
     * 记录幂等号
     * @param idempotenceId 幂等号
     * @param time 过期时间
     */
    void record(String idempotenceId, Integer time);

    /**
     * 删除幂等号
     * @param idempotenceId 幂等号
     */
    void delete(String idempotenceId);

}
  • 定义一个幂等处理接口实现类

@Component
public class RedisIdempotence implements Idempotence {
    @Autowired
    private RedisRepository redisRepository;

    @Override
    public boolean check(String idempotenceId) {
        return redisRepository.exists(idempotenceId);
    }

    @Override
    public void record(String idempotenceId) {
        redisRepository.set(idempotenceId,"1");
    }

    @Override
    public void record(String idempotenceId,Integer time) {
        redisRepository.setExpire(idempotenceId,"1",time);
    }

    @Override
    public void delete(String idempotenceId) {
        redisRepository.del(idempotenceId);
    }
}

❝

这个实现类,咱们就用redis存储这个幂等号 实现4个方法:

检查是否存在幂等号

记录幂等号

记录幂等号(带过期时间)

删除幂等号

❞

  • 幂等工具类

@Component
public class IdempotenceUtil {
    @Autowired
    private RedisRepository redisRepository;
    /**
     * 生成幂等号
     * @return
     */
    public String generateId() {
        String uuid = UUID.randomUUID().toString();
        String uId=Base64Util.encode(uuid).toLowerCase();
        redisRepository.setExpire(uId,"1",1800);
        return uId;
    }

    /**
     * 从Header里面获取幂等号
     * @return
     */
    public String getHeaderIdempotenceId(){
        ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
        HttpServletRequest request = attributes.getRequest();
        String idempotenceId=request.getHeader("idempotenceId");
        return idempotenceId;
    }
}

❝

这个工具类,提供两个方法。

1.生成一个幂等号,咱们就用uuid

2.从Header里面获取幂等号

❞

  • 定义一个注解

/**
 * 接口增加幂等性
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface IdempotenceRequired {

}
  • 切面

@Aspect
@Slf4j
@Component
public class IdempotenceSupportAdvice {
    @Autowired
    private Idempotence idempotence;
    @Autowired
    IdempotenceUtil idempotenceUtil;

    /**
     * 拦截有@IdempotenceRequired 注解 的方法。
     */
    @Pointcut("@annotation(xxx.xxx.IdempotenceRequired)")
    public void idempotenceMethod(){}

    @AfterThrowing(value = "idempotenceMethod()()",throwing = "e")
    public void afterThrowing(Throwable e){
        if(!(e instanceof IdempotencyException)) {
            // 从HTTP header中获取幂等号idempotenceId
            String idempotenceId = idempotenceUtil.getHeaderIdempotenceId();
            idempotence.record(idempotenceId, 1800);
        }
    }

    @Around(value = "idempotenceMethod()")
    public Object around(ProceedingJoinPoint  joinPoint) throws Throwable {
        // 从HTTP header中获取幂等号idempotenceId
        String idempotenceId = idempotenceUtil.getHeaderIdempotenceId();
        if(StringUtils.isEmpty(idempotenceId)){
            //不存在幂等号则不进行额外操作
            return joinPoint.proceed();
        }
        // 前置操作 幂等号是否存在
        boolean existed = idempotence.check(idempotenceId);
        if (!existed) {
            throw new IdempotencyException("{success:false,message:"操作重复,请重新输入幂等号重试!",data:-2}");
        }
        //删除幂等号
        idempotence.delete(idempotenceId);
        Object result = joinPoint.proceed();

        return result;
    }
}
  • 定义个controller

@RequestMapping("/idempotence")
public class IdempotenceController {
    /**
     * 生成幂等号
     * @return
     */
    @GetMapping("/generateId")
    public JsonResult generateId(){
        IdempotenceUtil idempotenceUtil=SpringUtil.getBean(IdempotenceUtil.class);
        String uId=idempotenceUtil.generateId();
        return JsonResult.success("成功生成!").setData(uId);
    }
}

好了,实现的代码,就是这些了,理解起来也是比较简单,没有过多复杂的逻辑。

接下来,就是如何使用的问题了,

0327b034f7a5e475eb1f33ac3f063e73.jpeg
使用的问题

这个使用,也是十分的简单啦!!!

幂等的使用

「服务端:」

不是所有的方法都需要切面拦截 ,只有 IdempotenceRequired 注解的方法才会被拦截。

例如下面接口:

@IdempotenceRequired
@PostMapping("/getUsers")
public JsonResult getUsers(){

    //执行正常业务逻辑
    ...
}

在开发幂等接口时,只需要在方法上简单增加一个 IdempotenceRequired 注解即可。

这基本上就是代码非侵入式了呀!!!

1849f9336196e0aaebd1548064db6eb5.jpeg
代码非侵入式

「客户端:」

服务端处理好后,在客户端访问接口的时候需要执行以下步骤:

❝

  • 需要先获取幂等号

  • 然后将幂等号添加到请求头中

❞

  • 1.获取幂等号http://服务地址/idempotence/generateIdhttp://xn--zfry9hnb732h/idempotence/generateId

1f46e8dde2724d0965936bf706744295.jpeg
获取幂等号
  • 2.请求调用

❝

往header中添加幂等号

❞

cee1eae435a13367dd7aa1d5cba5f15d.jpeg
往header中添加幂等号

好了,到这里幂等的实现,就已经完成了!!!^_^

那我们就可以愉快的编写代码了!!!^_^



欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢:

26635cfe3a856e71c65ead1b086a57b6.png

已在知识星球更新源码解析如下:

409be656c65788da318e57e10d89ba2d.jpeg

e077303924f0a3656167455c261cb48c.jpeg

aee34aeea4c1780e66f719c24804b945.jpeg

0fc235ebf426890369323d5e9647bd01.jpeg

最近更新《芋道 SpringBoot 2.X 入门》系列,已经 101 余篇,覆盖了 MyBatis、Redis、MongoDB、ES、分库分表、读写分离、SpringMVC、Webflux、权限、WebSocket、Dubbo、RabbitMQ、RocketMQ、Kafka、性能测试等等内容。

提供近 3W 行代码的 SpringBoot 示例,以及超 4W 行代码的电商微服务项目。

获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)
多云密钥管理实战:构建统一KMS网关,破解阿里云、腾讯云、AWS密钥孤岛 密钥管理是数据安全的核心基础,其核心原理在于对加密密钥进行全生命周期的安全生成、存储、分发、轮换与销毁。在云原生与多云架构成为主流的今天,传统的单云密钥管理服务(KMS)面临严峻挑战,各云平台密钥体系割裂形成的“密钥孤岛”,导致策略不一致、操作复杂且审计困难,严重影响了安全基线的统一与运维效率。为解决这一痛点,一种可行的技术方案是构建一个统一的KMS代理网关。该网关作为抽象层,并不实际存储密钥材料,而是通过标准化的API和适配器,实现对阿里云KMS、腾讯云KMS、AWS KMS等异构服务的统一策略下发与操作 阅读详情

相关推荐

ML模型上线不是终点,而是生产稳定性真正的起点

机器学习模型部署并非开发流程的收尾,而是系统进入真实业务环境的开端。其核心挑战在于模型与特征服务、API网关、数据库及下游业务系统的深度耦合,而非算法本身。延迟、数据漂移、集成脆弱性、失败处理机制等工程问题,直接决定AI能否持续创造业务价值。尤其在金融、风控、电商等高敏场景中,P99延迟、特征新鲜度、决策健康度等指标已演变为可量化的业务成本。本文聚焦MLOps落地中的关键实践:时效性契约设计、三级退化策略、可观测失败路径、漂移驱动的业务洞察,以及嵌入式合规治理,为从实验室模型迈向千万级稳定推理提供可复用的生

308

Java 幂等 实现

基于 redis 实现API操作幂等,为更新类接口添加特定的注解,增加幂等参数ClientToken,在基于ClientToken唯一的情况下先检查redis里是否有响应的结果,否则去请求service层再将结果放入redis,来达到请求幂等的效果。

suge大帝的博客 1996

SpringBoot+MyBatis构建校园心理健康平台:匿名树洞与预警系统实战

在Web应用开发领域,SpringBoot与MyBatis的组合是构建企业级后端服务的经典技术栈。SpringBoot通过自动配置和起步依赖,极大地简化了项目的初始化和部署流程;而MyBatis作为一款半自动化的ORM框架,凭借其动态SQL和精细化的SQL控制能力,在处理复杂业务查询时展现出显著优势。这一技术组合的核心价值在于,它能够高效、灵活地支撑起业务逻辑多变的数据驱动型应用。在心理健康服务等需要处理敏感数据的应用场景中,这种对数据操作的精准控制尤为重要。例如,构建一个校园匿名倾诉平台(树洞系统),不仅

weixin_27219587的博客 277

【安全】Java幂等性校验解决重复点击(6种实现方式)

幂等是一个数学与计算机科学概念,英文 idempotent [aɪˈdempətənt]。。比如 求绝对值 的函数,就是幂等的,abs(x) = abs(abs(x))。计算机科学中,幂等表示一次和多次请求某一个资源应该具有同样的作用。满足幂等条件的性能叫做幂等性。

Innocence_0的博客 1561

java如何实现接口的幂等

接口幂等性是指无论调用多少次,其结果都是一致的。在网络通信中,特别是在使用HTTP协议进行接口调用时,幂等性非常重要。一个幂等的接口意味着即使多次调用同一个接口,其对系统的状态不会产生额外的影响,也不会导致不一致的结果。 幂等性对于系统的可靠性和稳定性至关重要,因为它可以确保在网络通信中发生故障或者重试时不会对系统造成意外的影响。在设计和实现接口时,需要考虑如何确保接口的幂等性,本文介绍一些常用的技术实现~

ExpressLRS 915MHz vs 2.4GHz:实测对比与TX12遥控器的最佳搭配方案

本文深入对比了ExpressLRS 915MHz与2.4GHz两种频段在穿透能力、延迟、抗干扰等方面的实测表现,并结合RadioMaster TX12遥控器的硬件特性,提供了从微型花飞到极限远航等不同场景下的最佳搭配方案与EdgeTX系统配置指南,帮助FPV玩家根据核心飞行需求做出精准选择。

milk8的博客 447

rouyi后端开发文档-幂等性(防止重复提交)

例如说,用户快速的双击了某个按钮,前端没有禁用该按钮,导致发送了两次重复的请求。

随风why 1423

VMware 虚拟机里连不上网的五种解决方案

在VMware虚拟机里的虚拟机系统连接不上网络 首先,注意查看适配器选项里的网络连接这两个网络连接是否存在,如果不存在可以重新装一下VM 如果存在,连不上网 解决办法一: 虚拟机设置里,找到“网络适配器”,右边的网络连接选择“NAT 模式”,如果不行的话再linux系统。还是不行的话接着看第二种解决方案。 解决方法二: 可能原因是VMware NET Service...

墨轩 18万+

微服务 接口 高并发 幂等 防重 高并发扣减

本文是从技术论坛上大家一人一句没有条理的讲解,我整理一下发到优快云上,希望对大家有用。 什么是幂等性 抄用一段数学上的定义:f(f(x)) = f(x)。x被函数f作用一次和作用无限次的结果是一样的。幂等性应用在软件系统中,我把它简单定义为:某个函数或者某个接口使用相同参数调用一次或者无限次,其造成的后果是一样的,在实际应用中一般针对于接口进行幂等性设计。举个栗子,在系统中,调用方A调用系统B的...

zhaoyang10的专栏 1906

机械臂开发必备:KDL库正逆解与动力学实战指南

在机器人算法领域,运动学与动力学计算是机械臂控制、仿真与轨迹规划的核心基础。正运动学描述关节空间到笛卡尔空间的映射,逆运动学则需要求解复杂的非线性方程,工程实现时常面临数值稳定性与调试效率的挑战。KDL(Kinematics and Dynamics Library)作为ROS生态中广泛使用的开源库,提供了统一的模型描述与高效求解器,将正逆解、雅可比矩阵及动力学参数计算封装为简洁接口,大幅降低开发门槛。无论是机械臂的笛卡尔空间轨迹跟踪,还是基于动力学模型的前馈控制,KDL都展现出强大的工程价值。本文从运动学

weixin_33860528的博客 2509

DrawCall、Batches、SetPassCalls的区别和联系

一、DrawCall、Batches、SetPassCalls的基本理解 我们先从图形渲染的角度对这些概念做一个基本的理解。 1.1 DrawCall DrawCall实际上指的是一次图形渲染接口的调用,比如OpenGL的glDrawArrays或者glDrawElements的一次调用,以及DirectX的DrawPrimitive或者DrawIndexedPrimitive。因此,DrawCall可以简单理解为一次渲染指令调用。 1.2 Batches 我们知道,在调用DrawCall之前,需要设置渲染

远行's Blog 6379

JAVA软件开发岗位高频技术面筋(持续更新)

JAVA软件岗位技术面筋

Herry_644280825的博客 284

CHNS数据库下载与使用指南:从申请到导入的全流程解析

面板数据是经济学与公共卫生实证研究的重要支撑。中国健康与营养调查(CHNS)自1989年持续追踪中国居民的家庭与个人健康、营养及经济行为,为研究者提供了跨度近三十年的纵向微观数据。理解CHNS的数据组织原理与申请机制,是高效利用该数据的前提。该数据广泛适用于健康经济学、膳食营养分析及公共政策评估等场景。围绕CHNS的下载流程,完整梳理了注册申请、数据文件解析以及Stata、R、Python三种工具的读取方法,并针对邮箱验证、文件损坏、ID匹配等常见问题提供排查建议,帮助研究者快速建立数据处理基础。

weixin_33624741的博客 287

一种非侵入式的接口幂等性实现方案,非常优雅!

点击上方“芋道源码”,选择“设为星标”管她前浪,还是后浪?能浪的浪,才是好浪!每天 10:33更新文章,每天掉亿点点头发...源码精品专栏原创 | Java 2021超神之路,很肝~中文详细注释的开源项目RPC 框架 Dubbo 源码解析网络应用框架 Netty 源码解析消息中间件 RocketMQ 源码解析数据库中间件 Sharding-JDBC 和 MyCAT 源码解析作业调度中间件 E...

芋艿V 295

内容审核与文本安全技术综述:检测、过滤与对齐

检测质量高度依赖数据。毒性/仇恨/冒犯语言检测领域形成了一批经典数据集,但它们的标签体系差异很大:例如 OLID(OffensEval)强调“是否冒犯—冒犯类型—目标对象”三层结构;HateXplain 在“hate/offensive/normal”三分类之外,还提供目标群体与人类标注的 rationale span;RealToxicityPrompts 则不做离散标签,而是用毒性分数来研究“模型续写时的毒性退化”。ACL 汇编。

nmdbbzcl的博客 1372

Arduino ESP32 Web服务器从microSD卡读取

Arduino ESP32 Web服务器从microSD卡读取 将网页内容放到SD卡中,当有客户端数据请求时,从SD卡读取信息进行发送,比起SPIFFS文件系统,更节约板上的硬件资源。 SD卡接线说明 ESP32----- SD D5(GPIO 5)-----CS D18(GPIO 18)-----SCK D19(GPIO 19)-----MISO D23()GPIO 23-----MOSI 文件放置 需要把文件放置到SD卡的根目录下。注意SD卡的格式FAT32格式。 实例代码 /*

perseverance51博客 1435

java幂等 实现 框架_架构设计 | 接口幂等性原则,防重复提交Token管理

一、幂等性概念1、幂等简介编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。就是说,一次和多次请求某一个资源会产生同样的作用影响。2、HTTP请求遵循Http协议的请求,越来越强调Rest请求风格,可以更好的规范和理解接口的设计。GET:用于获取资源,不应有副作用,所以是幂等的;POST:用于创建资源,重复提交POST请求可能产生两个不同的资源,有副作用不满足幂等性;PU...

weixin_30236323的博客 386

YOLO26改进策略【Neck】| CVPR2025 LCA轻量交叉注意力 跨层级双向引导 + 分层降噪增强,提升微小目标特征表达

简单相加、拼接融合无法建立深浅层双向约束关系,浅层微小目标易被深层背景覆盖,深层全局信息难以修正浅层噪声;普通单路自注意力仅单一层内建模依赖,缺少跨层级特征互引导机制,深浅特征信息割裂;标准多头跨注意力计算量大、参数量高,轻量化单模态检测/分割网络部署困难,无法区分前景目标与背景噪声。为此设计单模态轻量化交叉注意力LCA,构建浅层细节、深层语义双分支双向引导结构,轻量完成跨层级特征交互,同步降噪并强化单模态微小目标特征。

Limiiiing的博客 523

Java接口幂等性设计场景解决方案v1.0

java 幂等性 接口

zhuzj12345的博客 664

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Java架构师之路:优雅设计与实现接口幂等性

我们先看两道互联网大厂的面试题?1、分布式/微服务系统接口的幂等性如何设计?比如不能重复扣款;2、消息中间件如何解决消息的幂等性?消息怎么防止不被重复消费;幂等这个词本身源自数学,幂等性是数学中的一个概念,常见于抽象代数中,表达的是N次变换与1次变换的结果相同,在计算机的各个领域都借用了该概念。本课程带你聊聊接口幂等性的那些事。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

redis数据库队列(list),集合(set)元素设置类似过期(expire)功能

转自 https://blog.youkuaiyun.com/leean950806/article/details/78669070/ **(2018-07-23更新: 本案例使用的解决方案以及代码,在较大数据量的操作情境下存在严重redis性能问题——大集合的一次性删除操作可能导致redis阻塞,正常业务将无法访问、操作redis。如果需要使用相关功能,请使用资料中的1方法或自行优化redis删除队列操...

worn_xiao的博客 2988

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

redis学习(五) redis过期时间

redis过期时间  1.redis过期时间介绍   有时候我们并不希望redis的key一直存在。例如缓存,验证码等数据,我们希望它们能在一定时间内自动的被销毁。redis提供了一些命令,能够让我们对key设置过期时间,并且让key过期之后被自动删除。 2.redis过期时间相关命令   1.EXPIRE PEXPIRE   EXPIRE 接口定义:EXPIRE key "secon...

weixin_30273763的博客 827

一种非侵入式幂等性的Java实现

例如,“setTrue()”函数就是一个幂等函数,无论多次执行,其结果都是一样的.更复杂的操作幂等保证是利用唯一交易号(流水号)实现。3.我们系统判断这个号在我们的系统中已经存在,如果存在则允许业务办理,如果不存在,则表示这是一个非法的号,我们直接抛出异常。在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数,或幂等方法,是指可以使用相同参数。好了,到这里幂等的实现,就已经完成了!的意思,就是,我们的业务逻辑代码,不需要处理。幂等,我们需要怎么做,如何实现幂等呢?

m0_71777195的博客 975

Redis设置过期时间

memcached 和 redis 的set命令都有expire参数,可以设置key的过期时间。但是redis是一个可以对数据持久化的key-value database,它的key过期策略还是和memcached有所不同的。梳理,整理如下: redis通过expire命令来设置key的过期时间。 语法:redis.expire(key, expiration) 1. 在小于2.1.3的redis版本里,只能对key设置一次expire。redis2.1.3和之后的版本里,可以多次对key使用expire命

qq_46416934的博客 6436

关于Redis数据过期策略

1、Redis中key的的过期时间 通过EXPIRE key seconds命令来设置数据的过期时间。返回1表明设置成功,返回0表明key不存在或者不能成功设置过期时间。在key上设置了过期时间后key将在指定的秒数后被自动删除。被指定了过期时间的key在Redis中被称为是不稳定的。 当key被DEL命令删除或者被SET、GETSET命令重置后与之关联的过期时间会被清除 127.0.0...

weixin_30315723的博客 3245
上一篇: SpringBoot 实现异步记录复杂日志
下一篇: Sharding JDBC 实战:分布式事务处理
公众号-芋道源码
博客等级 码龄10年 1636粉丝 377原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值