一、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