bonsaicode/redis

Redis Redlock 算法实现,用于确保在存在多个重复服务器的环境中只有一个服务器执行进程,例如 GCP 自动伸缩负载均衡器。

1.0.4 2020-09-20 00:10 UTC

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服务。

要求

安装

要在控制台中安装模块,请运行以下命令

$ 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