通过 redis 控制用户不能重复点赞

假设一个需求:

     一遍文章,用户点赞过了,不能重复再进行点赞。

下面通过redis进行实现

实现当前用户只能点赞一次:

     /**
     * 吐槽点赞
     */
    @RequestMapping(value = "/thumbup/{id}", method = RequestMethod.PUT)
    public Result thumbup(@PathVariable String id) {
        //模拟当前登录用户ID
        String userId = "1001";
        //1.从redis中取出用户吐槽点赞记录
        String flag = (String) redisTemplate.opsForValue().get("thumbup_" + userId + "_" + id);
        //2.如果没有记录,让用户点赞,并且把点赞记录存入redis中
        if (flag == null) {
            spitService.thumbup(id);
            redisTemplate.opsForValue().set("thumbup_" + userId + "_" + id, "1", 1);
            return new Result(true, StatusCode.OK, "吐槽点赞成功");
        } else {
            //3.如果有记录,提示“不能重复点赞”
            return new Result(true, StatusCode.OK, "不能重复点赞");
        }
    }

当然,也可以实现限制当前用户在某个时间段的点赞次数,比如在一个小时内只能点赞一次,一天只能点赞一次。

只需要在上述代码进行修改,添加一个时间即可

//分钟内不能重复点赞
redisTemplate.opsForValue().set("thumbup_" + userId + "_" + id, "1", 1, TimeUnit.MINUTES);

//一天内不能重复点赞
redisTemplate.opsForValue().set("thumbup_" + userId + "_" + id, "1", 1, TimeUnit.DAYS);

 

你可能感兴趣的:(redis)