不言不语

您现在的位置是: 首页 >  数据库  >  Redis

Redis

redis实例:如果快速实现限时访问

2022-05-28Redis
在接口开发工作中很常见的限时访问功能,每个用户每分钟只允许调用一次接口。或者论坛中,每个用户五分钟之内只能提交一次评论。本章我们就来实现一个简单的限时访问,每个用户每分钟只允许调用一次接口。

在高并发的项目中,通常我们不会用业务层代码来处理限时访问,更常见的是用 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' => '每分钟只允许调用一次'];}


文章评论