首頁 >資料庫 >Redis >redis加鎖的常用方式有哪幾種

redis加鎖的常用方式有哪幾種

王林
王林轉載
2020-12-30 17:10:522977瀏覽

redis加鎖的常用方式有哪幾種

常用的加鎖方式有:

(學習影片分享:redis影片教學

一、incr加鎖定

<?php
$redis  =  new Redis();
$redis->connect(&#39;127.0.0.1&#39;);
$redis->multi();
$redis->incr(&#39;number&#39;);
//$redis->decr(&#39;number&#39;);
//$redis->expire(&#39;number&#39;, -1);
var_dump($redis->get(&#39;number&#39;));
var_dump($redis->ttl(&#39;number&#39;));

二、setnx加鎖

<?php
$redis->setnx(&#39;name&#39;, &#39;felix&#39;);
var_dump($redis->get(&#39;name&#39;));
var_dump($redis->ttl(&#39;name&#39;));

三、set加鎖

<?php
$redis->set(&#39;like&#39;, &#39;chuangxi&#39;, [&#39;nx&#39;, &#39;ex&#39; => 10]);
//$redis->del(&#39;like&#39;);
var_dump($redis->get(&#39;like&#39;));
var_dump($redis->ttl(&#39;like&#39;));

四、防止死鎖

<?php
$isLock = false;
do {
    $isLock = $redis->set(&#39;like&#39;, &#39;a&#39;, [&#39;nx&#39;, &#39;ex&#39; => 10]);
    if($isLock) {
        if($redis->get(&#39;like&#39;) == &#39;a&#39;) {
            //执行逻辑
            $redis->del(&#39;like&#39;);
            continue;
        }
    } else {
        usleep(5000);
    }
} while (!$isLock);
 
//redis事务
$redis->set();
$redis->watch([&#39;number&#39;, &#39;like&#39;]);

相關推薦: redis教學

以上是redis加鎖的常用方式有哪幾種的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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