🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
在接口开发工作中很常见的限时访问功能,每个用户每分钟只允许调用一次接口。或者论坛中,每个用户五分钟之内只能提交一次评论。本章我们就来实现一个简单的限时访问,每个用户每分钟只允许调用一次接口。 在高并发的项目中,通常我们不会用业务层代码来处理限时访问,更常见的是用 Nginx + Lua + Redis 来实现限时访问。 ## 每分钟只允许调用一次接口 ~~~ public function somthing($user_id) { $redis = new \Redis(); $redis->connect('127.0.0.1', 6379); // 锁不存在,就执行业务代码 if (!$redis->exists("lock:{$user_id}")) { // ========== // do somthing // ========== // 在 Redis 中存一个有效期60秒的缓存锁 $redis->set('lock:{$user_id}', 1, 60); return ['code' => 200, 'message' => '操作成功', 'data' => 'somthing']; } return ['code' => 422, 'message' => '每分钟只允许调用一次']; } ~~~