vetruvet/laravel-phpredis

在Laravel中使用phpredis作为Redis连接

v1.0.4 2016-06-09 19:32 UTC

This package is not auto-updated.

Last update: 2024-09-14 15:58:01 UTC


README

Laravel默认使用Predis连接到Redis。

在已安装PhpRedis的服务器上,您可能希望使用它而不是Predis以提高性能。此包为Laravel附带的RedisServiceProvider提供了一种替代方案。

要求

安装

首先,当然,请确保服务器上已安装PhpRedis。有关安装说明,请参阅此处

将依赖项添加到composer.json

"require": {
    "vetruvet/laravel-phpredis": "1.*"
}

PhpRedisServiceProvider添加到config/app.php(取消注释内置的RedisServiceProvider

...
'providers' => array(
    ...
    // 'Illuminate\Redis\RedisServiceProvider',
    'Vetruvet\PhpRedis\PhpRedisServiceProvider',
    ...
),
...

默认的Facade别名与PhpRedis提供的Redis类冲突。为了修复此问题,请将config/app.php中的别名重命名

...
'aliases' => array(
    ...
    'LRedis'           => 'Illuminate\Support\Facades\Redis', 
    ...
),
...

一个不幸的副作用是,现在需要调用Redis函数,如LRedis::connection(),这看起来不太美观或流畅,但一切仍然以相同的方式工作(您可以像往常一样调用Redis命令,例如LRedis::get('key'))。

最后运行composer update以更新和安装所有内容。

选项

配置与Laravel中Redis的默认配置相同。事实上,您可以在不更改配置的情况下在PhpRedis和Predis之间切换(但无法保证集群或序列化)。

所有选项都是可选的,您可以通过指定空数组来获取默认连接配置

'redis' => array(

    'cluster' => true, // if true a RedisArray will be created

    'default' => array(
        'host'       => '127.0.0.1', // default: '127.0.0.1'
        'port'       => 6379,        // default: 6379
        'password'   => password     // default: null
        'prefix'     => 'myapp:',    // default: ''
        'database'   => 7,           // default: 0
        'timeout'    => 0.5,         // default: 0 (no timeout)
        'serializer' => 'igbinary'   // default: 'none', possible values: 'none', 'php', 'igbinary'
    ),

),

唯一不是自我解释的选项是serializer选项。值直接对应于PhpRedis中的Redis::SERIALIZER_*常量。如果您指定igbinary,如果PhpRedis编译了--enable-redis-igbinary,则将使用igbinary作为序列化程序;否则,将回退到PHP的内置序列化程序。