indatus/laravel-ps-redis

laravel 的简单哨兵/redis 驱动封装。

v2.0 2017-02-02 17:11 UTC

This package is not auto-updated.

Last update: 2024-09-22 08:03:32 UTC


README

已弃用,请参阅 laravel/framework#18850 了解内置哨兵支持

laravel 的简单哨兵/redis 驱动封装。

默认的 Laravel Redis 驱动支持 Redis 集群,但不支持与 Redis 的高可用性,这正是 Laravel-PSRedis 发挥作用的地方。

使用 Laravel-PSRedis,您将获得所有 Laravel Redis 的魔法,例如 Redis::set()Redis::get(),甚至可以使用 Redis 支持会话、队列和缓存,您只需能够利用高可用性 Redis 实例而不是简单的集群。

我们通过在 IOC 容器中创建 Redis 绑定之前询问您的 Redis 哨兵 主的位置来实现这一点。通过这样做,我们确保任何时候您的应用程序与 Redis 实例建立连接,该连接都是与主实例。

README 内容

## Installation ### Installation for Laravel 5

You can install Laravel-PSRedis easily with composer.

 "require": { "indatus/laravel-ps-redis": "^1.2", }, 
### Installation for Laravel 4

If you're using Laravel 4 then the installation is slightly different. Laravel-PSRedis depends on sparkcentral/psredis which requires 'predis/predis': '>=1.0' in it's stable release. I've taken the liberty of forking sparkcentral/psredis and rolling back predis/predis to 0.8.7 which is required by laravel 4. To utilize this fork simply require both indatus\larave-ps-redis and sparkcentral/psredis in your composer.json. And add a repository to point to the fork. Like so:

 "repositories": [ { "type": "vcs", "url": "https://github.com/Olofguard/PSRedis" } ], "require": { "indatus/laravel-ps-redis": "dev-master", "sparkcentral/psredis": "dev-master" }, 

This will help composer form an installable set of packages, otherwise composer complains about laravel needing predis/predis at version 0.8.7 while sparkcentral/psredis is installing 1.0.*.

## Configuration

Next, just fill in your sentinel/redis server info in the app/config/database.php config files that already exist in your application.

You may already have some default laravel config values in place in your database config file that looks like this.

/* |-------------------------------------------------------------------------- | Redis Databases |-------------------------------------------------------------------------- | | Redis is an open source, fast, and advanced key-value store that also | provides a richer set of commands than a typical key-value systems | such as APC or Memcached. Laravel makes it easy to dig right in. | */ 'redis' => [ 'cluster' => false, 'default' => [ 'host' => '127.0.0.1', 'port' => 6379, 'database' => 0, ], ], 

Just overwrite those with the values below and fill in your server info.

 'redis' => [ /** the name of the redis node set */ 'nodeSetName' => 'sentinel-node-set', 'cluster' => false, /** Array of sentinels */ 'masters' => [ [ 'host' => 'sentinel-instance.domain.com', 'port' => '26379', ], [ 'host' => 'sentinel-instance.domain.com', 'port' => '26379', ] ], /** how long to wait and try again if we fail to connect to master */ 'backoff-strategy' => [ 'max-attempts' => 10, // the maximum-number of attempt possible to find master 'wait-time' => 500, // miliseconds to wait for the next attempt 'increment' => 1.5, // multiplier used to increment the back off time on each try ] ]; 
### The Service Provider

Finally, you just need to add the service provider to the providers array in app.php and comment or remove the redis service provider.

 /* |-------------------------------------------------------------------------- | Autoloaded Service Providers |-------------------------------------------------------------------------- | */ 'providers' => [ ... // 'Illuminate\Redis\RedisServiceProvider', # comment this out 'Indatus\LaravelPSRedis\LaravelPSRedisServiceProvider' # add this ], 

Note: you may have to composer dump-autoload after adding the service provider

## Contributing
  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -m 'Added some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request
## Testing

Feel free to clone the repo and run the unit tests locally.

 ./vendor/bin/phpunit -c ./phpunit.xml 
## License [The MIT License (MIT)](https://github.com/Indatus/laravel-PSRedis/blob/master/LICENSE)