如何解决在spring boot中使用opsForValue增加值时是否可以设置过期时间
现在我正在使用此代码在 spring boot 中增加一个值:
String loginFailedKey = "admin-login-Failed:" + request.getPhone();
Object loginFailedCount = loginFailedTemplate.opsForValue().get(loginFailedKey);
if (loginFailedCount != null && Integer.valueOf(loginFailedCount.toString()) > 3) {
throw PostException.REACH_MAX_RETRIES_EXCEPTION;
}
List<Users> users = userService.list(request);
if (CollectionUtils.isEmpty(users)) {
loginFailedTemplate.opsForValue().increment(loginFailedKey,1);
throw PostException.LOGIN_INFO_NOT_MATCH_EXCEPTION;
}
是否可以在增加密钥时设置过期时间?如果发生新的增量命令,则更新过期时间。我阅读了文档,但没有找到工具。
解决方法
Spring Boot 中没有直接的方法。
其中一种间接方式是使用 LUA srcipt。
例如:
RedisScript script = RedisScript.of(
"local i = redis.call('INCRBY',KEYS[1],ARGV[1])"
+ " redis.call('EXPIRE',ARGV[2])"
+ " return i");
redisTemplate.execute(script,key,String.valueOf(increment),String.valueOf(expiration));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。