redis記憶體鎖,PHP防止併發操作

2021-08-17 16:46:55 字數 659 閱讀 2676

1、redis鎖**:

/*** 獲取鎖

* @param string $key 鎖標識

* @param int $expire 鎖過期時間

* @return boolean

*/public function lock($key, $expire=5)

}return $is_lock? true : false;

}/**

* 釋放鎖

* @param string $key 鎖標識

* @return boolean

*/public function unlock($key)

2、業務**(php)

//設定鎖,防止多個使用者併發操作連麥超出數量限制

$lockkey = cachekeymanage::getlianmailockkey($partyid); //快取key

$redis = new redishelperutil();

$lock = $redis->lock($lockkey);

if(!$lock)

sleep(1);

}if(!$lock)

}doaction..... //獲取到了鎖,做自己的業務

php 使用redis鎖限制併發訪問類

對於一些需要限制同乙個使用者併發訪問的場景,如果使用者併發請求多次,而伺服器處理沒有加鎖限制,使用者則可以多次請求成功。例如換領優惠券,如果使用者同一時間併發提交換領碼,在沒有加鎖限制的情況下,使用者則可以使用同乙個換領碼同時兌換到多張優惠券。偽 如下 if a 可以換領 b 執行換領 c 更新為已...

php 使用redis鎖限制併發訪問類

對於一些需要限制同乙個使用者併發訪問的場景,如果使用者併發請求多次,而伺服器處理沒有加鎖限制,使用者則可以多次請求成功。例如換領優惠券,如果使用者同一時間併發提交換領碼,在沒有加鎖限制的情況下,使用者則可以使用同乙個換領碼同時兌換到多張優惠券。偽 如下 if a 可以換領 b 執行換領 c 更新為已...

php 使用redis鎖限制併發訪問類

對於一些需要限制同乙個使用者併發訪問的場景,如果使用者併發請求多次,而伺服器處理沒有加鎖限制,使用者則可以多次請求成功。例如換領優惠券,如果使用者同一時間併發提交換領碼,在沒有加鎖限制的情況下,使用者則可以使用同乙個換領碼同時兌換到多張優惠券。偽 如下 if a 可以換領 b 執行換領 c 更新為已...