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

admin1年前 (2024-01-07)PHP837

前言

最近项目发现部分接口有异步操作,前端请求时候这个接口没有做防抖设计所以出现同一秒有多次请求过来,由于这个接口会请求三方接口,这个接口是个耗时操作平均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是失效时间也就是想多少秒内不在接受新的请求

相关文章

基于php的雪花算法(snowflake)

<?php class SnowFlake {     const TWEPOCH = 1288834974...

PHP8 是如何利用代码提升开发效率

PHP 8 引入了许多新的语言特性和改进,以提升开发效率、增加代码可读性和减少错误。以下是一些 PHP 8 的新特性和代码示例:1 Named Arguments(命名参数):// ...