
使用Redis限制访问次数
最近在写 Ten·API 的新后台,打算限制一下用户的日请求数,所以简单学了一下Redis,每个自然日(0时-24时)限制请求1000
次。数据库基本返回的都是Array
,所以可以用PHP内置函数in_array
来判断token
是否存在数组内,达到验证的目的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| <?php
date_default_timezone_set('PRC');
$token = @$_REQUEST['token'];
if(isset($token)){ $redis = new Redis(); $redis->connect('127.0.0.1', 6379); if (!$redis->exists($token)){ $tomorrow = strtotime('tomorrow'); $time = $tomorrow-time(); $redis->set($token,1,$time); }else{ if ($redis->get($token) < 1000){ $redis->incr($token); $get_num = $redis->get($token); echo '已经调用'.$get_num.'次'; }else{ echo '次数用尽,已达到上限'.$redis->get($token).'次'; } } }else{ echo "请传递Token"; }
|