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 cluster集群配置是否正确可以运行命令 redis-cli --cluster check 127.0.0.1:6381
查看
(如果redis集群不是本机需要把127.0.0.1改成集群ip)
额我链接阿里云的redis群集也是显示Couldn't map cluster keyspace using any provided seed
make
大佬我按照你的思路,操作到最后一步,还是出现Couldn't map cluster keyspace using any provided seed 错误阿
集群哪里为啥就写一个ip?