ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Redis - increment 递增方法 | 处理防重复和并发问题

2022-01-05 05:00:47  阅读:235  来源: 互联网

标签:increment Redis 递增 redis 并发 专栏 key


 

慌途L 2019-08-11 15:51:20 21316 收藏 25
分类专栏: 日常记录 Redis 文章标签: redis increment 防重复 并发 递增
版权

日常记录
同时被 2 个专栏收录
39 篇文章0 订阅
订阅专栏

Redis
3 篇文章0 订阅
订阅专栏
Redis - increment 递增方法 | 处理防重复和并发问题
一、使用场景
1.有时因为网路原因,在保存或其他操作时会发生重复提交问题
2.针对秒杀、抢购、多个用户同时下单的情况(不过redis针对秒杀只是其中的一环)
二、incr 递增函数介绍
Redis Incr 命令将 key 中储存的数字值增一。
如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作。
如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
本操作的值限制在 64 位(bit)有符号数字表示之内。
INCR 命令是一个针对字符串的操作。 因为 Redis 并没有专用的整数类型, 所以键 key 储存的值在执行 INCR 命令时会被解释为十进制 64 位有符号整数。

三、示例
@PostMapping(value = "/testRedis")
public R testRedis(HttpServletRequest request) {
// 通过用户ID和访问IP,处理重复请求
String key = userId + IPUtils.getIpAddr(request);
Object redisKey = redisTemplate.opsForValue().get(key);
System.out.println("redis值:" + redisKey);

// redis中的key值存在则表示当前这次请求距离上一次请求不超过下面设置的三秒钟,直接返回即可
if(redisKey != null){
return R.ok("您的操作过快,请刷新重试");
}

Long count = redisTemplate.opsForValue().increment(key, 1); // 设置递增因子
System.out.println("递增的值" + count);
redisTemplate.expire(key, 3, TimeUnit.SECONDS); // 设置过期时间 3秒
return R.ok("成功");
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
通过这种方法,同样我们也可以用到并发的情况下
————————————————
版权声明:本文为CSDN博主「慌途L」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_25112523/article/details/97801092

标签:increment,Redis,递增,redis,并发,专栏,key
来源: https://www.cnblogs.com/arielmeng/p/15765244.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有