温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Laravel中处理接口并发的方法

发布时间:2021-02-20 10:11:27 来源:亿速云 阅读:311 作者:小新 栏目:编程语言

这篇文章主要介绍了Laravel中处理接口并发的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

Laravel 中简单处理接口并发

简介

日常业务逻辑中经常会出现接口并发处理,最常见的是同一个接口被瞬间调了好几次,导致产生的数据错乱
为了避免这种问题发生,一般前端、移动端会限制按钮触发接口限制,后端接口调用限制。

说在前面

该方法仅适用于简单的接口频率限制。并不适用于商品秒杀,但原理类似。

原 理

这只是一个简单的实现过程,主要用了 redis 原生的 set 方法类给 key 设置值的时候设置过期时间,如果改 key 存在 ,则返回 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('database.redis.default.host'));
    // 设置密码
    $redis->auth(config('database.redis.default.password'));
    // 设置默认的 redis 库
    $redis->select(config('database.redis.default.database'));
    // 利用原生的set方法设置一个key的过期时间
    $status = $redis->set($key, $value, array( 'nx', 'ex' => $ttl ));
    
    return $status;
}

写在后面

我只是一个慢慢学习的小菜鸟。如果有不对的地方,或者有更好的方法希望各位不吝指教,相互讨论,感激不尽!

感谢你能够认真阅读完这篇文章,希望小编分享的“Laravel中处理接口并发的方法”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI