Laravel-PSRedis
! Only for laravel/lumen >= 5.4, for previous laravel/lumen versions use 1.* version of the package https://github.com/Indatus/laravel-PSRedis, (*1)
A simple sentinel/redis driver wrapper for laravel., (*2)
The default laravel redis driver supports redis clusters, however, it does not support high availability with redis, which is where Laravel-PSRedis comes to the rescue., (*3)
With Laravel-PSRedis you'll get all the laravel redis magic that you aleady have such
as Redis::set() and Redis::get(), and even session, queue, and cache support using redis,
you'll just be able to leverage High Avaliability redis instances instead of a simple cluster., (*4)
We do this by asking your Redis Sentinels the location of your master before creating our Redis bindings in the IOC Container. By doing this we ensure anytime your app has a connection to your redis instance, that connection is to master., (*5)
README Contents
, (*6)
Installation
, (*7)
Installation for Laravel 5
You can install Laravel-PSRedis easily with composer., (*8)
composer require paunin/laravel-ps-redis
, (*9)
Configuration
Next, just fill in your sentinel/redis server info in the app/config/database.php config files that already exist in your application., (*10)
You may already have some default laravel config values in place in your database config file that looks like this., (*11)
/*
|--------------------------------------------------------------------------
| 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,
],
],
Remove it and create separate configuration file for redis config/redis.php, (*12)
<?php
# config/redis.php
return [
'nodeSetName' => env('SENTINEL_NODE_SET_NAME', 'mymaster'),
'cluster' => false,
// Sentinel nodes
'masters' => sentinels(env('SENTINELS', '')),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 26379),
'database' => env('REDIS_DATABASE', 0),
/** how long to wait and try again if we fail to connect to master */
'backoff-strategy' => [
'max-attempts' => env('SENTINEL_MAX_ATTEMPTS', 10),
// the maximum-number of attempt possible to find master
'wait-time' => env('SENTINEL_WAIT_TIME', 500),
// miliseconds to wait for the next attempt
'increment' => env('SENTINEL_INCREMENT', 1.5),
// multiplier used to increment the back off time on each try
],
];
, (*13)
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., (*14)
$app->register(LaravelPSRedis\LaravelPSRedisServiceProvider::class);