首頁 >php框架 >Laravel >簡析Laravel中處理介面並發

簡析Laravel中處理介面並發

藏色散人
藏色散人轉載
2021-02-13 09:20:493917瀏覽

下面由Laravel教學欄位為大家介紹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中處理介面並發的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除