Code前端首页关于Code前端联系我们

在 Laravel 中处理接口并发

terry 2年前 (2023-09-25) 阅读数 53 #后端开发

处理接口并发经常出现在日常业务逻辑中。最常见的就是同一个界面被一次性修改多次,导致数据混乱
为了避免这种问题,前端一般会限制触发按钮界面限制,后端会限制调用接口。

前面解释过

此方法仅适用于简单的接口限频。它不适用于产品的闪购,但原理类似。

原理

这只是一个简单的实现过程。主要是利用redis原生的set方法类在设置键值时设置过期时间。如果键存在则返回 false。如果不存在,则设置该值并设置过期时间,返回true。防止干扰。

代码部分:

/**
 * 简单处理并发
 * @User yaokai
 * @param $key 要设置的key
 * @param int $ttl 限制过期时间
 * @param int $value 要设置的值
 * @return bool true成功  false失败
 */
function redisConcurren($key, $ttl = 240, $value = 1)
{
    // 实例化原生 redis
    $redis = new \Redis();
    
    // 指定需要使用的 redis 服务器
    $redis->connect(config(''));
    // 设置密码
    $redis->auth(config(''));
    // 设置默认的 redis 库
    $redis->select(config(''));
    // 利用原生的set方法设置一个key的过期时间
    $status = $redis->set($key, $value, array( 'nx', 'ex' => $ttl ));
    
    return $status;
}

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门