Redis 主从集群以及对等节点集群搭建以及连接
前言
Redis是开源的,内存数据结构存储的健值数据库。用于数据存储,缓存和消息代理。支持的数据结构有字符串,Hash,List,Set,有序集合等等。除此之外,Redis还使用集群来提供高可用性。本文就介绍如何搭建Redis主从集群和Redis对等节点集群。关于Redis的安装部分,可以查看Redis在Window上的几种安装方法(包含linux)。废话不多说,开始Redis集群搭建之旅(通过端口号来搭建单机版的集群)。
对等节点搭建(三节点)
集群搭建基本命令:
./src/redis-cli --cluster create host1:port host2:port host3:port
- 首先在redis安装目录下新建cluster文件夹,然后在文件夹里新建8001 8002 8003文件夹
mkdir cluster
cd cluster && mkdir 8001 8002 8003
- 在8001文件夹下新建redis.conf文件
vim redis.conf
,添加如下内容
port 8001 # 指定端口
cluster-enabled yes # 启用集群
cluster-config-file nodes-8001.conf # 文件名可以随便起,但是不能重复
cluster-node-timeout 5000 # 指定超时时间
appendonly yes
- 将redis.conf分别复制到8002, 8003目录中,并且将redis.conf文件里面的8001分别改成8002和8003
cp redis.conf ../8002
cp redis.conf ../8003
- 分别启动8001 8002 8003节点,在redis安装目录下分别执行以下命令
./src/redis-server cluster/8001/redis.conf
./src/redis-server cluster/8002/redis.conf
./src/redis-server cluster/8003/redis.conf
8001节点
8002节点
8003节点
- 搭建集群,进入redis安装目录,使用如下命令
./src/redis-cli --cluster create 127.0.0.1:8001 127.0.0.1:8002 127.0.0.1:8003
等待分配slot,然后输入yes即可,如下图
使用客户端连接集群,Python和Java以及NodeJS
- Python,使用aredis包,代码如下
import asyncio
from aredis import StrictRedisCluster
# 连接集群
async def create_cluster(*ports: int):
nodes = list(
map(lambda port: {
"host": "localhost", "port": port}, ports)
)
redis = StrictRedisCluster(startup_nodes = nodes)
await redis.flushdb()
return redis
async def main():
redis = await create_cluster(8001, 8002, 8003)
await redis.set("name", "sundial dreams")
print(await redis.get(