Webman使用redis集群教程

six

1. 安装docker

apt-get install docker.io

提示:有些系统安装docker后需要手动启动docker,启动命令不同系统可能不同

2. 拉取镜像

docker pull redis:7.0.4

截图

3. 创建并运行容器

# 节点1
docker run -d --name redis-node-1 --net host --privileged=true redis:7.0.4 --cluster-enabled yes --port 6381
# 节点2
docker run -d --name redis-node-2 --net host --privileged=true redis:7.0.4 --cluster-enabled yes --port 6382
# 节点3
docker run -d --name redis-node-3 --net host --privileged=true redis:7.0.4 --cluster-enabled yes --port 6383
# 节点4
docker run -d --name redis-node-4 --net host --privileged=true redis:7.0.4 --cluster-enabled yes --port 6384
# 节点5
docker run -d --name redis-node-5 --net host --privileged=true redis:7.0.4 --cluster-enabled yes --port 6385
# 节点6
docker run -d --name redis-node-6 --net host --privileged=true redis:7.0.4 --cluster-enabled yes --port 6386

截图

4. 进入容器 redis-node-1

docker exec -it redis-node-1 /bin/bash

截图

5. 创建集群

redis-cli --cluster create 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385 127.0.0.1:6386 --cluster-replicas 1

截图

提示:如果是多服务器部署,那么127.0.0.1改成每个服务器的内网ip

6. 退出容器
执行exit退出 redis-node-1 容器
截图

7. 给webman安装 illuminate/redis
进入webman项目目录运行

composer require -W illuminate/redis illuminate/events

8. 更改webman的redis配置

config/redis.php

<?php

return [
    'clusters' => [
        'default' => [
            [
                'host'     => '127.0.0.1', // 如果不是本机redis集群,这里写redis集群的内网ip
                'password' => null,
                'port'     => 6381,
                'database' => 0,
            ],
        ],
    ],
];

9. 增加测试页面

app/controller/RedisController.php

<?php

namespace app\controller;

use support\Request;
use support\Redis;

class RedisController
{
    public function index(Request $request)
    {
        Redis::set('time', time());
        return Redis::get('time');
    }
}

10. 重启webman

php start.php restart

11. 测试结果

访问 http://127.0.0.1:8787/redis
截图

最后
如果出现报错 Couldn't map cluster keyspace using any provided seed,有以下原因

  • redis集群没配置成功
  • redis集群没启动
  • config/redis.php 配置的ip或端口是错的
  • 连的redis不是redis cluster集群,比如连的是一个普通redis实例

查看redis cluster集群配置是否正确可以运行命令 redis-cli --cluster check 127.0.0.1:6381 查看
(如果redis集群不是本机需要把127.0.0.1改成集群ip)
截图

1145 4 4
4个评论

小叽叽叽叽

额我链接阿里云的redis群集也是显示Couldn't map cluster keyspace using any provided seed

  • 暂无评论
owenzhang

make

  • 暂无评论
故人重来

大佬我按照你的思路,操作到最后一步,还是出现Couldn't map cluster keyspace using any provided seed 错误阿

  • 暂无评论
tanhongbin

集群哪里为啥就写一个ip?

  • 暂无评论

six

17907
积分
0
获赞数
0
粉丝数
2016-11-14 加入
🔝