zoukankan      html  css  js  c++  java
  • 使用redis的increment()方法实现计数器功能

    一直知道redis可以用来实现计数器功能,但是之前没有实际使用过,昨天碰到一个需求:用户扫码当天达到20次即提示:当日扫码次数达到上限! 

    当时就想到使用redis的递增方法increment()来实现计数器功能,一定要注意redisTemplatestringRedisTemplate的使用

    首先设置key:

    该key我使用了用户id和当天日期作为key的一部分,date:xxxx-xx-xx格式,这样一来该用户在第二天扫码的时候又是一个新key,因为日期不同了

    设置key的过期时间:

    实现计数器功能:

    通过使用上面的方法,redis的计数器功能就可以实现了。

    在使用过程过遇到的问题:

    在使用的过程中,老是会抛错:ERR value is not an integer or out of range

    后来发现当时我使用的方法底层用的redisTemplatestringRedisTemplate串了,当时setKey的时候用的方法底层是

    stringRedisTemplate,后面我想get(key)的时候方法底层的模板使用的是redisTemplate,后面统一了一下模板的使用,然后计数

    器功能正常运行不再抛错。

    看过很多文章说是序列化器的锅,increment方法必须是stringRedisTemplate模板才能使用,但是我在实际使用的时候也确实是

    用了redisTemplate,这个具体原因我还在看,此次使用中最主要的问题是setKey的时候使用的模板和取key的时候使用的模板不

    一致导致的。写个笔记记录一下,一个坑不踩第二遍。大家如果遇到一样的问题可以一起讨论学习一下。

  • 相关阅读:
    shell编程——循环执行
    ubuntu 设置管理 集锦
    27. 计算FPS
    29 GameProject4(+GUI)
    26. D3D显示文本
    30. D3D特效
    28. GUI
    32. 细节映射
    25. GameProject3
    Direct3D渲染到纹理 (部分转)
  • 原文地址:https://www.cnblogs.com/wgty/p/12810502.html
Copyright © 2011-2022 走看看