一、incr加锁
1
2
3
4
5
6
7
8
9
|
<?php
$redis ->connect( '127.0.0.1' );
$redis ->multi();
$redis ->incr( 'number' );
//$redis->decr('number');
//$redis->expire('number', -1);
var_dump( $redis ->get( 'number' ));
var_dump( $redis ->ttl( 'number' ));
|
二、setnx加锁
1
2
3
4
|
<?php
$redis ->setnx( 'name' , 'felix' );
var_dump( $redis ->get( 'name' ));
var_dump( $redis ->ttl( 'name' ));
|
三、set加锁
1
2
3
4
5
|
<?php
$redis ->set( 'like' , 'chuangxi' , [ 'nx' , 'ex' => 10]);
//$redis->del('like');
var_dump( $redis ->get( 'like' ));
var_dump( $redis ->ttl( 'like' ));
|
四、防止死锁
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<?php
$isLock = false;
do {
$isLock = $redis ->set( 'like' , 'a' , [ 'nx' , 'ex' => 10]);
if ( $isLock ) {
if ( $redis ->get( 'like' ) == 'a' ) {
//执行逻辑
$redis ->del( 'like' );
continue ;
}
} else {
usleep(5000);
}
} while (! $isLock );
//redis事务
$redis ->set();
$redis ->watch([ 'number' , 'like' ]);
|
到此这篇关于浅谈redis加锁常用几种方式的文章就介绍到这了,更多相关redis 加锁内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://blog.csdn.net/weixin_41635750/article/details/108402143