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");
相关推荐
开开心心就好1 小时前
高效报价软件,简化商铺定价流程
服务器·数据库·安全·面试·职场和发展·电脑·symfony
钢铁男儿2 小时前
PyQt5高级界而控件(容器:装载更多的控件QDockWidget)
数据库·python·qt
Mr_Mao4 小时前
Naive Ultra:中后台 Naive UI 增强组件库
前端
阿蒙Amon5 小时前
C# Linq to SQL:数据库编程的解决方案
数据库·c#·linq
前端小趴菜055 小时前
React-React.memo-props比较机制
前端·javascript·react.js
摸鱼仙人~6 小时前
styled-components:现代React样式解决方案
前端·react.js·前端框架
段帅龙呀7 小时前
Redis构建缓存服务器
服务器·redis·缓存
sasaraku.7 小时前
serviceWorker缓存资源
前端
RadiumAg8 小时前
记一道有趣的面试题
前端·javascript
yangzhi_emo8 小时前
ES6笔记2
开发语言·前端·javascript