如何通过redis的increment()方法实现高效计数器功能示例?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2072个文字,预计阅读时间需要9分钟。
直接使用Redis实现计数器功能,之前虽未实际应用,但今遇需求:用户扫码当天达到20次即提示:今日扫码次数已达上限!此时便想到使用Redis的递增方法incremen。
一直知道redis可以用来实现计数器功能,但是之前没有实际使用过,昨天碰到一个需求:用户扫码当天达到20次即提示:当日扫码次数达到上限!
当时就想到使用redis的递增方法increment()来实现计数器功能,一定要注意redisTemplate和stringRedisTemplate的使用
首先设置key:
该key我使用了用户id和当天日期作为key的一部分,date:xxxx-xx-xx格式,这样一来该用户在第二天扫码的时候又是一个新key,因为日期不同了
设置key的过期时间:
实现计数器功能:
通过使用上面的方法,redis的计数器功能就可以实现了。
在使用过程过遇到的问题:
在使用的过程中,老是会抛错:ERR value is not an integer or out of range
后来发现当时我使用的方法底层用的redisTemplate和stringRedisTemplate串了,当时setKey的时候用的方法底层是
stringRedisTemplate,后面我想get(key)的时候方法底层的模板使用的是redisTemplate,后面统一了一下模板的使用,然后计数
器功能正常运行不再抛错。
本文共计2072个文字,预计阅读时间需要9分钟。
直接使用Redis实现计数器功能,之前虽未实际应用,但今遇需求:用户扫码当天达到20次即提示:今日扫码次数已达上限!此时便想到使用Redis的递增方法incremen。
一直知道redis可以用来实现计数器功能,但是之前没有实际使用过,昨天碰到一个需求:用户扫码当天达到20次即提示:当日扫码次数达到上限!
当时就想到使用redis的递增方法increment()来实现计数器功能,一定要注意redisTemplate和stringRedisTemplate的使用
首先设置key:
该key我使用了用户id和当天日期作为key的一部分,date:xxxx-xx-xx格式,这样一来该用户在第二天扫码的时候又是一个新key,因为日期不同了
设置key的过期时间:
实现计数器功能:
通过使用上面的方法,redis的计数器功能就可以实现了。
在使用过程过遇到的问题:
在使用的过程中,老是会抛错:ERR value is not an integer or out of range
后来发现当时我使用的方法底层用的redisTemplate和stringRedisTemplate串了,当时setKey的时候用的方法底层是
stringRedisTemplate,后面我想get(key)的时候方法底层的模板使用的是redisTemplate,后面统一了一下模板的使用,然后计数
器功能正常运行不再抛错。

