欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

php redis setnx分布式鎖簡單原理解析

 更新時間:2020年10月23日 10:48:22   作者:黑白配  
這篇文章主要介紹了php redis setnx分布式鎖簡單原理解析,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

我就廢話不多說了,大家還是直接看代碼吧~

<?php
//高并發(fā)分布式鎖
header("Content-type:text/html;charset=utf-8");
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
echo "Connection to server sucessfully";
//echo $redis->get("name");exit;
$expire = 1;
$key = 'test1';
$lock = false;
$is_lock=$redis->setnx($key,time()+$expire);
if(!$is_lock){
$lock_time=$redis->get($key);
//鎖已過期,重置
if($lock_time<time()){
$redis->del($key);
$lock_time=$redis->get($key);
$is_lock=$redis->setnx($key,time()+$expire);
}
}

$is_lock ? true : false;
if($is_lock){
writeFile("正常訪問"."\n");
}else{
writeFile("系統(tǒng)繁忙"."\n");
}
function writeFile($data,$type='a'){
//sleep(1);
//usleep(500000);//假設(shè)暫停 500毫秒
$filename = date("Ymd").".log";
$handle =@ fopen($filename, $type);
flock($handle, LOCK_EX);
ob_start();
echo "\n" . "[SQL]" . "\n";
print_r ($data);
$string = ob_get_contents();
ob_end_clean();
$fettle = @fwrite($handle, $string);
fclose($handle);
@chmod($filename,0777);
}

補充知識:php redis set 單機鎖

如果一個請求更新緩存的時間比較長,甚至比鎖的有效期還要長,導致在緩存更新過程中,鎖就失效了,此時另一個請求會獲取鎖,但前一個請求在緩存更新完畢的時候,如果不加以判斷直接刪除鎖,就會出現(xiàn)誤刪除其它請求創(chuàng)建的鎖的情況,所以我們在創(chuàng)建鎖的時候需要引入一個隨機值:

$ok = $redis->set($key, $random, array('nx', 'ex' =>5));

if ($ok) {
  $cache->update();

  if ($redis->get($key) == $random) {
    $redis->del($key);
  }
}

以上這篇php redis setnx分布式鎖簡單原理解析就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • magento后臺無法登錄解決辦法的兩種方法

    magento后臺無法登錄解決辦法的兩種方法

    可能很多朋友有同樣的經(jīng)歷,magento在服務(wù)器中配置域名是可以正常的訪問了,但是在本地配置后卻無法登錄后臺,賬號密碼登錄的時候發(fā)現(xiàn)出現(xiàn)空白,無法跳轉(zhuǎn)到后臺,本文章向大家介紹兩種解決本地magento后臺無法登錄的方法,需要的朋友可以參考下
    2016-12-12
  • php微信公眾號開發(fā)(4)php實現(xiàn)自定義關(guān)鍵字回復

    php微信公眾號開發(fā)(4)php實現(xiàn)自定義關(guān)鍵字回復

    這篇文章主要介紹了php微信公眾號開發(fā)第四課,php實現(xiàn)簡單微信文本通訊,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • php短視頻源碼之瀑布流分割線左右間距問題及解決代碼

    php短視頻源碼之瀑布流分割線左右間距問題及解決代碼

    這篇文章給大家介紹php短視頻源碼,瀑布流分割線左右間距問題解決的相關(guān)代碼,代碼簡單易懂,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-09-09
  • Thinkphp實現(xiàn)站點靜態(tài)化的方法詳解

    Thinkphp實現(xiàn)站點靜態(tài)化的方法詳解

    本篇文章主要介紹了Thinkphp實現(xiàn)站點靜態(tài)化的方法,thinkphp提供了一個有效的生成靜態(tài)頁的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • PHP增刪改查項目的實戰(zhàn)詳解

    PHP增刪改查項目的實戰(zhàn)詳解

    這篇文章主要為大家詳細介紹了PHP增刪改查項目,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • PHP擴展框架之Yaf框架的安裝與使用

    PHP擴展框架之Yaf框架的安裝與使用

    這篇文章主要介紹了PHP擴展框架之Yaf框架的安裝與使用的相關(guān)資料,具有參考借鑒價值,需要的朋友可以參考下
    2016-05-05
  • php上傳文件問題匯總

    php上傳文件問題匯總

    這篇文章主要給大家匯總介紹了一些php上傳文件問題,需要的朋友可以參考下
    2015-01-01
  • php文件擴展名判斷及獲取文件擴展名的N種方法

    php文件擴展名判斷及獲取文件擴展名的N種方法

    本篇文章主要通過代碼給大家介紹php文件擴展名判斷以及獲取文件擴展名的N種方法,需要的朋友跟著腳本之家小編一起學習學習吧
    2015-09-09
  • laravel yajra插件 datatable的使用詳解

    laravel yajra插件 datatable的使用詳解

    這篇文章主要介紹了laravel yajra插件 datatable的使用詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • Smarty模板常見的簡單應用分析

    Smarty模板常見的簡單應用分析

    這篇文章主要介紹了Smarty模板常見的簡單應用,結(jié)合實例形式分析了Smarty模板的引入、創(chuàng)建、設(shè)置及相關(guān)的常見使用技巧,需要的朋友可以參考下
    2016-11-11

最新評論