redis方法 setIfAbsent

复制代码
    private void recordErrorTimes(LoginInfoReq req, String errorTimesKey) {
        String errorTimes = stringRedisTemplate.opsForValue().get(errorTimesKey);
        Boolean result = stringRedisTemplate.opsForValue().setIfAbsent(errorTimesKey, "1", BasicConstants.CACHE_TIME_5, TimeUnit.MINUTES);
        if (!Boolean.TRUE.equals(result)) {
			//是false的情况下,说明redis中已经设置了这个key,已经有了这个键
			//如果是true,则是该redis中没有这个键
            // 已记录过登录失败次数,失败次数加1
            stringRedisTemplate.opsForValue().increment(errorTimesKey);
        }
        log.info("LoginServiceImpl.userLogin , 登录失败, 失败次数: {}, req:{}", errorTimes, JSON.toJSONString(req));
    }

大致意思是
判断该键在redis中是否存在,不存在返回true则新增并且赋值
存在了 则返回false

方法链接 getAndSet setIfAbsent

复制代码
1、 getAndSet(K key, V value)

方法含义:获取原来key键对应的值并重新赋新值

使用方法:

redisTemplate.opsForValue().getAndSet("stringkey", "newvalue");

2、Boolean setIfAbsent(K key, V value)

方法含义:如果键不存在则新增,存在则不改变已经有的值。

使用方法:

redisTemplate.opsForValue().setIfAbsent("newkey", "newvalue");
相关推荐
EF@蛐蛐堂1 分钟前
Federation vs Garfish vs Micro-app 微前端选型(二)
前端·vue.js·前端框架
Paraverse_徐志斌5 分钟前
RAG架构(检索增强生成)与向量数据库
数据库·ai·llm·embedding·milvus·rag
洋不写bug6 分钟前
前端html基础标签
前端·html
GISer_Jing15 分钟前
前端学习总结——AI&主流前沿方向篇
前端·人工智能·学习
尘世中一位迷途小书童26 分钟前
Monorepo 工具大比拼:为什么我最终选择了 pnpm + Turborepo?
前端·架构
一枚前端小能手27 分钟前
🔍 重写vue之ref和reactive
前端·javascript·vue.js
星链引擎29 分钟前
4sapi.com开发者进阶版(技术导向,侧重 “原理 + 最佳实践”)
前端
尘世中一位迷途小书童31 分钟前
2025年了,你还在用传统的多仓库管理吗?Monorepo 架构深度解析
前端·架构
fruge34 分钟前
前端性能优化实践指南:从理论到落地
前端·性能优化
快起来别睡了38 分钟前
用这 9 个 API,我把页面性能干到了 90+
前端