webman框架redis如何实现接口重复请求

admin2年前 (2024-01-07)PHP1020

前言

最近项目发现部分接口有异步操作,前端请求时候这个接口没有做防抖设计所以出现同一秒有多次请求过来,由于这个接口会请求三方接口,这个接口是个耗时操作平均2秒才能返回,所以想办法要防止前端多次请求

解决方案代码

/**
 * redis锁
 */
if (!function_exists('redisLock')) {
    /**
     * redis锁
     * @param $key
     * @param $ttl
     * @return bool
     */
    function redisLock($key, $ttl): bool
    {
        if (Redis::get($key)) {
            return false;
        }
        Redis::setEx($key, $ttl, 1);
        return true;
    }
}

这个方法封装一个redisLock方法,接收两个方法,第一个是redis的键值,根据实际情况声明,要保证这个接口的唯一,ttl是失效时间也就是想多少秒内不在接受新的请求

相关文章