redis实战:redis限制某ip的恶意请求
2015-07-19 22:09
537 查看
在我们日常开发工作中,经常会遇到接口被恶意请求的情况,应用redis,我们可以很方便的限制某ip一定时间段内对接口的请求次数。
具体实现代码如下:
接口文件:api.php
redis文件:redis.php
还可以扩展开来,比如说某个接口调用地址限制了接口调用次数,如果需要在短时间内多次重复调用该接口的话,就可以考虑在第一次请求结束后用redis缓存请求结果(最好设置好存活周期,比如说半小时),之后的请求就可以直接从redis中获取数据了,原理和上面限制ip的原理相似,有兴趣的童鞋可以自己写写代码试验一下。
具体实现代码如下:
接口文件:api.php
<?php require_once 'redis.php'; $ip = $_SERVER['REMOTE_ADDR']; $redis = new iredis(); //如果该ip存在值说明30秒内重复请求了,挡掉 if($redis->get($ip)){ exit('come back later!'); } $testArr = array( 'name' => 'ben', 'age' => 24 ); echo json_encode($testArr); //请求完成后将ip作为键值存储在redis中 $redis->set($ip, true, 30);
redis文件:redis.php
<?php class iredis extends Redis { public function __construct(){ parent::__construct(); $this->connect('127.0.0.1', '6379'); } }
还可以扩展开来,比如说某个接口调用地址限制了接口调用次数,如果需要在短时间内多次重复调用该接口的话,就可以考虑在第一次请求结束后用redis缓存请求结果(最好设置好存活周期,比如说半小时),之后的请求就可以直接从redis中获取数据了,原理和上面限制ip的原理相似,有兴趣的童鞋可以自己写写代码试验一下。
相关文章推荐
- Redis 安装教程 (Windows 2.6.13 稳定版)
- java存储GBK编码数据到redis
- CentOS Linux下 redis 下载、安装、配置、主从集群配置
- Redis 源码分析系列1-main函数相关调用分析
- Redis常用命令
- 分布式Redis集群解决方案
- 【ci框架】ci框架中中有关redis文件缓存相关的文件
- redis的no-appendfsync-on-rewrite参数
- 【thinkphp3.2.x】thinkphp3.2.x中有关redis缓存相关的文件
- 【thinkphp3.1.x】thinkphp3.1.x中有关redis缓存相关的文件
- redis的maxmemory设置
- redis学习笔记
- (Windows Maven项目)Redis数据库的安装和操作实现
- 浅谈php的缓存机制之redis
- php查询mysql并缓存到redis
- 浅谈php的缓存机制之redis
- php查询mysql并缓存到redis
- php查询mysql并缓存到redis
- Redis安装及主从配置
- redis 3.0.1 在CentOS上的安装