创建集群:
- 这里在同一台服务器用不同端口标识不同的 redis 服务。
- 在 / 下创建 redis-cluster 目录,其下创建 7001,7002 ··· 7006目录:
mkdir -p /redis-cluster/700{1..6}/{logs,data} && cd /redis-cluster
-
在 /redis-cluster 目录下编写配置文件 cluster.sh:
for i in {1..6} do cat > 700${i}/redis.conf <<EOF daemonize yes port 700${i} cluster-enabled yes cluster-config-file cluster-nodes-700${i}.conf cluster-node-timeout 15000 appendonly yes bind 0.0.0.0 protected-mode no dbfilename dump-700${i}.rdb logfile /redis-cluster/700${i}/logs/redis.log pidfile /redis-cluster/700${i}/data/redis.pid dir /redis-cluster/700${i}/data appendfilename "appendonly-700${i}.aof" EOF done
-
为 cluster.sh 脚本添加权限并运行该脚本:
chmod 777 cluster.sh #给脚本添加权限 ./cluster.sh #运行该脚本
-
将 redis 的 src 目录下的客户端命令拷贝至 /redis-cluster 文件夹下:
#将 redis 路径替换为自己本机的 redis 路径 cp /usr/local/src/redis/redis-4.0.14/src/redis-cli /redis-cluster/redis-cli cp /usr/localsrc/redis/redis-4.0.14/src/redis-server /redis-cluster/redis-server
- 此时 /redis-cluster 目录结构:
- 启动六个 redis 进程:
redis-server 7001/redis.conf redis-server 7002/redis.conf redis-server 7003/redis.conf redis-server 7004/redis.conf redis-server 7005/redis.conf redis-server 7006/redis.conf
- 查看 redis 进程:
- 执行创建集群命令:
#将地址替换为自己的地址 redis-cli --cluster create 62.234.35.76:7001 62.234.35.76:7002 62.234.35.76:7003 62.234.35.76:7004 62.234.35.76:7005 62.234.35.76:7006 --cluster-replicas 1 #说明: #redis 集群至少需要 3 个主节点,每个主节点有一个从节点,总共 6 个节点 #replicas 指定 1 表示:每个主节点有一个从节点
- 此时 redis 集群启动成功:
测试集群:
- 进入集群:
redis-cli -c -h 62.234.35.76 -p 7001 # -c 表示:以集群方式连接 redis # -h 表示:指定 ip 地址 # -p 表示:指定端口号
- 查询集群信息:
cluster nodes #查询集群节点信息 cluster info #查询集群状态信息 info replication #当前 redis 服务的信息
- 插入 key-value :
- Spring 测试 redis 集群:
// 连接redis集群 @Test public void testJedisCluster() { JedisPoolConfig config = new JedisPoolConfig(); // 最大连接数 config.setMaxTotal(30); // 最大连接空闲数 config.setMaxIdle(2); //集群结点 Set<HostAndPort> jedisClusterNode = new HashSet<HostAndPort>(); jedisClusterNode.add(new HostAndPort("62.234.35.76", 7001)); jedisClusterNode.add(new HostAndPort("62.234.35.76", 7002)); jedisClusterNode.add(new HostAndPort("62.234.35.76", 7003)); jedisClusterNode.add(new HostAndPort("62.234.35.76", 7004)); jedisClusterNode.add(new HostAndPort("62.234.35.76", 7005)); jedisClusterNode.add(new HostAndPort("62.234.35.76", 7006)); JedisCluster jc = new JedisCluster(jedisClusterNode, config); JedisCluster jcd = new JedisCluster(jedisClusterNode); jcd.set("name", "zhangsan"); String value = jcd.get("name"); System.out.println(value); }