【问题标题】:Multiple Laravel Apps with a Singe Redis instance具有单个 Redis 实例的多个 Laravel 应用程序
【发布时间】:2018-09-09 21:28:02
【问题描述】:

是否可以在一个 Redis 服务器上运行两个 Laravel 应用程序而不会发生键名冲突?我没有看到设置命名空间或添加缓存前缀的文档。

https://laravel.com/docs/5.6/redis

【问题讨论】:

标签: laravel redis namespaces laravel-5.6


【解决方案1】:

我想我找到了答案,至少对于我们这些使用phpredis 的人来说。使用默认的predis 驱动程序似乎无法做到这一点。

除了默认的主机、端口、数据库和密码服务器 配置选项,PhpRedis 支持以下附加 连接参数:persistent、prefix、read_timeout 和 timeout。 您可以将这些选项中的任何一个添加到您的 Redis 服务器配置中 config/database.php 配置文件:

'redis' => [

    'client' => 'phpredis',

    'default' => [
        'host' => env('REDIS_HOST', '127.0.0.1'),
        'password' => env('REDIS_PASSWORD', null),
        'port' => env('REDIS_PORT', 6379),
        'database' => 0,
        'prefix' => 'my-app-prefix'
    ],

],

https://laravel.com/docs/5.6/redis#configuration

【讨论】:

  • Prefix 运行良好,但不提供两个应用程序之间的任何隔离。如果 app1 运行缓慢的命令,app2 也会受到影响。推荐的方法是运行两个不同的进程,每个应用程序一个。如有必要,您可以在同一台服务器上运行它们。
【解决方案2】:

Redis 支持每台服务器多个“数据库”:您只需在配置中设置“数据库”=> 1。但是,根据the docs,不建议这样做:

实际上,Redis 数据库应该主要用于在需要时分离属于同一应用程序的不同键,而不是为了将单个 Redis 实例用于多个不相关的应用程序。

因此,根据您的使用情况,您最好在当前服务器旁边启动另一台 redis 服务器。

【讨论】:

    猜你喜欢
    • 2017-01-08
    • 1970-01-01
    • 1970-01-01
    • 2019-07-06
    • 2012-12-02
    • 1970-01-01
    • 1970-01-01
    • 2019-05-20
    • 2014-01-26
    相关资源
    最近更新 更多