一个 Redis 实例支持多个 Laravel 应用程序

3
有没有可能在单个Redis服务器上运行两个Laravel应用程序而不会发生键名冲突?我没有看到设置命名空间或添加缓存前缀的文档。
参考链接:https://laravel.com/docs/5.6/redis

这个答案对我很有帮助:https://dev59.com/kl0Z5IYBdhLWcg3wlRQV#50354984 - Ryan
2个回答

0

我想我找到了答案,至少对于那些使用phpredis的人来说是这样。似乎默认的predis驱动程序不支持此功能。

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

'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


前缀功能很好,但不能在两个应用程序之间提供任何隔离。如果app1运行一个慢命令,app2也会受到影响。推荐的方法是运行两个不同的进程,一个用于每个应用程序。如果必要,您可以在同一台服务器上运行它们。 - Sripathi Krishnan

0
Redis支持每个服务器多个“数据库”:您只需要在配置中设置'database' => 1。然而,根据文档的建议,这并不推荐:
实际上,Redis数据库主要用于(如果需要)将属于同一应用程序的不同键分开,而不是为多个无关的应用程序使用单个Redis实例。
因此,根据您的使用情况,最好是在当前的Redis服务器旁边再启动一个Redis服务器。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接