前段时间出于双11要赶到,公司索要在接口央浼上,做一下涌出节制的拍卖,或许做叁个防范刷单的平安拦截:比如:二个接口央求,约束每秒乞请总量为200次,超越200次就等候,等前一秒,再度恳请,这里用到三个redis作为一个流速計的形式来兑现。

调用redis的方法:

INCR key

将 key 中存款和储蓄的数字值增一。

设若 key 一纸空文,那么 key 的值会先被初步化为 0 ,然后再推行 INC奇骏 操作。

4503.com,假如值满含错误的项目,或字符串类型的值不能够代表为数字,那么重临一个错误。

那是三个照准字符串的操作,因为 Redis 未有专用的大背头类型,所以 key
内积攒的字符串被分解为十进制 64 位有号子整数来试行 INCTucson 操作。

code:

redis SET test 20OKredis INCR test(integer) 21redis GET test # 数字值在 Redis 中以字符串的形式保存"21"

流速计的落到实处

流速計是 Redis
的原子性自增操作可完结的最直观的方式了,它的主见优秀轻松:每当有个别操作发生时,向
Redis 发送贰个 INCCR-V 命令。

譬喻在八个 web
应用程序中,若是想明白顾客在一年中每一天的点击量,那么一旦将客商 ID
以致有关的日子信息作为键,并在历次客商点击页面时,施行二次自增操作就能够。

比如说客商名是 peter ,点击时间是 二〇一三 年 3 月 22 日,那么实行命令 INCENCOREpeter::二〇一三.3.22 。

$redisKey = “api_name_” + $api;$count = $this-redis-incr($redisKey);if ($count == 1) {//设置有效期一s$this-redis-expire($redisKey,1);//设置一s的过期时间}if (count  200) {//防止刷单的安全拦截return false;//超过就返回false}//后续处理

那就轻松的兑现了redis流量计的应用,别的还应该有以下措施:

以下三种办法壮大那几个大概的格局:

能够透过结合使用 INC奔驰G级 和 EXPIRE
,来达成只在鲜明的活着时间内张开计数(countingState of Qatar的目标。客商端能够经过应用
GETSET 命令原子性地获得计数器的当前值并将计数器清零,更加的多消息请参谋GETSET 命令。使用任何自增/自减操作,比如 DECEvoque 和 INCRBY
,客商能够经过施行不一的操作扩张或减少计数器的值,比方在玩乐中的记分器就大概用到那个命令。

总结

如上便是本文关于redis达成计数器-幸免刷单方法介绍的全体内容,希望对大家持有助于。感兴趣的爱人能够继承参照本站:Redis的为主同步解析、Java编制程序redisson达成布满式锁代码示例、简述Redis和MySQL的分别等,有怎么样难点得以每日留言,小编会及时复苏大家的。谢谢朋友们对本站的支撑!