过去,我可以像这样在我的配置中使用非集群式redis:
'redis' => [
'default' => [
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => 6379,
'database' => 0,
'cluster' => true,
]
],
Run Code Online (Sandbox Code Playgroud)
但是由于redis服务器上的负载,我必须对redis进行集群,当我拥有的唯一 redis连接被集群时,此配置可以正常工作(在大量工作后将其配置为):
'redis' => [
'client' => 'predis',
'cluster' => true,
'options' => [
'cluster' => 'redis',
'parameters' => [
'host' => env('REDIS_SHARD_1_HOST', '127.0.01'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_DEFAULT_PORT', 6379),
'database' => 0,
],
],
'clusters' => [
'default' => [
'host' => env('REDIS_SHARD_1_HOST', '127.0.01'),
'password' => env('REDIS_PASSWORD', …Run Code Online (Sandbox Code Playgroud) 我设置了Redis主从配置,其中有一个在同一台机器上运行的主(6379端口)和3个从(6380,6381,6382)。看起来集群已正确设置,因为在运行info命令中可以看到以下输出:
# Replication
role:master
connected_slaves:3
slave0:ip=127.0.0.1,port=6380,state=online,offset=29,lag=1
slave1:ip=127.0.0.1,port=6381,state=online,offset=29,lag=1
slave2:ip=127.0.0.1,port=6382,state=online,offset=29,lag=1
master_repl_offset:43
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:42
Run Code Online (Sandbox Code Playgroud)
但是,无论我在哪里尝试在主服务器中添加新密钥,都会出现以下错误:
(error) CLUSTERDOWN Hash slot not served
Run Code Online (Sandbox Code Playgroud)
在Mac OS X Yosemite中使用redis-3.0.7。
我有一个laravel(5.3)应用程序,redis用于会话(使用predis).只要我使用单个redis节点(使用config/database.php中的默认方法),一切正常.一旦我切换到Redis群集,虽然我开始得到MOVED错误,如50%的时间(基于谷歌搜索我明白这应该由predis管理,但不知何故不是).
我尝试将cluster参数更改为true,但后来我得到了一个奇怪的错误
No connection could be made because the target machine actively refused it. [tcp://127.0.0.1:6379]
Run Code Online (Sandbox Code Playgroud)
虽然我使用的redis群集部署在Azure中(并通过.env文件配置),但在使用单个节点时接受参数时没有任何问题.
组态
这是我的laravel配置(如前所述,它是标准默认值)
'redis' => [
'client' => 'predis',
'cluster' => false,
'default' => [
'host' => env('REDIS_HOST', 'localhost'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => 0,
],
],
Run Code Online (Sandbox Code Playgroud)
对于Redis的,我使用的Redis天青缓存集群高级P1,2个碎片(如所描述的在这里).
更新2
到目前为止,我还尝试了以下配置的变体:
我一直得到MOVED错误...
我的Redis版本是3.2,predis/predis包1.1.1
适用于predis 1.1+的工作配置
'redis' => [
'cluster' => true,
'default' => [
'host' => env('REDIS_HOST', 'localhost'),
'password' …Run Code Online (Sandbox Code Playgroud)