Redis INCR命令:常见计数场景

本文介绍了Redis内存数据库中的INCR命令,探讨了其在计数器、排行榜、限流、库存管理、点赞功能、订单编号生成等场景中的实用应用,以及一个限流场景的示例代码.
摘要由CSDN通过智能技术生成

Redis是一个流行的内存数据库,它提供了许多强大的功能,其中之一是 INCR 命令。INCR 命令允许对 Redis 键的值进行自增操作,而不需要手动编写复杂的逻辑。

INCR 命令在许多应用场景中非常有用。以下是一些常见的使用情况:

  1. 计数器:可以使用 INCR 命令实现计数器功能,如统计网页访问量、计算用户点击次数等。

  2. 排行榜:可以使用 INCR 命令来实现排行榜功能。例如,记录用户的得分情况,每次用户得分时使用 INCR 命令将其得分自增,然后可以根据得分排序生成排行榜。

  3. 限流:通过 INCR 命令可以实现简单的请求限流。例如,你可以设置一个键来表示每秒钟的请求数量,每次请求到达时,使用 INCR 命令对该键进行自增操作,并检查自增后的值是否超过了设定的阈值,从而实现请求的限流。

  4. 库存管理:对于商品库存管理,可以使用 INCR 命令来实现库存的自增和自减操作。例如,每次有商品售出时,使用 INCR 命令将库存数量减少,确保库存的准确性。

  5. 点赞功能:在社交媒体或论坛应用中,可以使用 INCR 命令来实现点赞功能。每次用户点赞时,使用 INCR 命令对点赞数量进行自增操作,可以快速计算出每个帖子或评论的点赞总数。

  6. 订单编号:对于生成唯一的订单编号,可以使用 INCR 命令来自增一个表示订单编号的键。每次生成订单时,使用 INCR 命令获取下一个订单编号,确保订单编号的唯一性和连续性。


    限流场景示例:15秒限制访问次数

    public synchronized Boolean requestVerification(String url) {
            //固定参数拼接接口url作为Key
            String urlKey = "platform:ai:api:url:" + url;
            //先通过前面生成的Key去Redis中进行查询
            String requestCount = stringBizRedisTemplate.opsForValue().get(urlKey);
    
            // 如果目前已经达到了调用次数限制
            if (StringUtils.isNotBlank(requestCount) && Integer.valueOf(requestCount) >= size) {
                return false;
            }
    
            // 如果该用户的Key在Redis中不存在,说明是第一次调用接口
            if (StringUtils.isEmpty(requestCount)) {
                //首次调用接口时,则在Redis中创建一个计数器
                stringBizRedisTemplate.opsForValue().set(urlKey, "1", 15L, TimeUnit.SECONDS);
            }
            // 如果该用户的Key在Redis中存在,说明并非第一次调用接口
            else {
                // 此时则通过Redis的incr命令,把对应的计数器加一
                stringBizRedisTemplate.opsForValue().increment(urlKey);
            }
            return true;
        }

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大兵11

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值