indatus / laravel-ps-redis
laravel 的简单哨兵/redis 驱动封装。
Requires
- php: >=5.6.0
- illuminate/support: 5.*
- jamescauwelier/psredis: ~1.1
Requires (Dev)
- laravel/framework: 5.*
- mockery/mockery: 0.9.*
- phpunit/phpunit: 4.*
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 5You 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.*
.
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 ],
## ContributingNote: you may have to
composer dump-autoload
after adding the service provider
- Fork it
- Create your feature branch (git checkout -b my-new-feature)
- Commit your changes (git commit -m 'Added some feature')
- Push to the branch (git push origin my-new-feature)
- Create new Pull Request
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)