bonsaicode / redis
Redis Redlock 算法实现,用于确保在存在多个重复服务器的环境中只有一个服务器执行进程,例如 GCP 自动伸缩负载均衡器。
1.0.4
2020-09-20 00:10 UTC
Requires
- php: >=7.1.0
This package is auto-updated.
Last update: 2024-09-20 08:45:12 UTC
README
Redis Redlock 算法实现,用于确保在存在多个重复服务器的环境中只有一个服务器执行进程,例如 GCP 自动伸缩负载均衡器。同时提供了一些phpredis方法的包装器。所有phpredis方法都可以通过此包装器使用。此包装器在$GLOBALS['REDIS']中创建并使用redis对象。
更多信息请参阅https://github.com/phpredis/phpredis
依赖关系
您必须有一个正在运行的redis服务。
要求
- PHP 7.1或更高版本
- phpredis包,例如rpm php72u-pecl-redis.x86_64 - https://github.com/phpredis/phpredis
安装
要在控制台中安装模块,请运行以下命令
$ composer require "bonsaicode/redis"
使用
# Create connection with configuration
$_config = [
'redis' => [
'host' => '10.0.0.1', # redis server
'port' => 6379,
'timeout' => 2,
'auth' => 'password', # needed if your redis requires it, also needs to be in /etc/redis.conf and /etc/php.d/50-redis.ini - session.save_path
'dbindex' => 1 # optional, session handler uses database 0, so we use 1 for app data
]
];
BonsaiCode\Redis::connectSelect( $_config['redis'] );
unset( $_config['redis'] ); # remove config and password from memory
# acquire lock
$lockKey = 'cron1';
list( $lockAcquired, $lockValue ) = BonsaiCode\Redis::lockAcquire( $lockKey );
if( $lockAcquired ) {
... your processing here ...
# release lock
BonsaiCode\Redis::lockRelease( $lockKey, $lockValue );
}
see test/Redis.php for more examples