安装Redis和Redis集群配置

Redis安装

Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。
它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。
Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过自动 分区(Cluster)提供高可用性(high availability)。

官网地址:https://redis.io

中文网地址:https://www.redis.cn

下载地址:https://redis.io/download

下载Redis到本地

建议使用虚拟linux中安装配置Redis(常用连接工具Xshell、MobaXterm)
下载Redis

curl -O https://download.redis.io/releases/redis-6.2.4.tar.gz
// 或者使用wget
sudo yum install wget
wget https://download.redis.io/releases/redis-6.2.4.tar.gz

安装配置Redis

// 解压make
tar -zxvf redis-6.2.4.tar.gz
cd redis-6.2.4
make

安装错误处理

gcc没有安装

make[3]: gcc: Command not found
sudo yum install gcc

jemalloc不存在问题

zmalloc.h:50:31: 致命错误:jemalloc/jemalloc.h:没有那个文件或目录

// 使用此命令代替make
make MALLOC=libc

简单启动redis-server

默认配置启动redis-server,&表示后台运行

./redis-6.2.4/src/redis-server &

使用redis-cli连接并测试结果

./redis-6.2.4/src/redis-cli
127.0.0.1:6379> set test 123456
OK
127.0.0.1:6379> get test
"123456"

配置Redis

默认配置下,redis启动只能本机访问,而且默认不是后台运行,需要配置:

配置redis.conf

# 后台运行
daemonize yes
# 配置bind后可以局域网访问,否则只能本机host,可以配置bind或者protected-mode no
# bind 127.0.0.1 ::1
bind 10.181.3.25
protected-mode no

使用配置文件启动

./redis-6.2.4/src/redis-server ./redis-6.2.4/redis.conf

配置Redis集群

文档地址:https://redis.io/topics/cluster-tutorial

本地环境

本地使用两台机器,10.181.3.25和10.181.3.26可以配置Redis集群,首先按照前面的方式在两台机器上都安装好Redis。

两台机器分别跑3个Redis进程,监听端口为7000-7002

集群配置文件

每台机器复制3份redis.conf,分别命名为redis7000.conf,redis7001.conf,redis7002.conf,然后找到相关配置:

# 后台运行
daemonize yes
# 配置bind后可以局域网访问,否则只能本机host,可以配置bind或者protected-mode no
# bind 127.0.0.1 ::1
bind 10.181.3.25
protected-mode no
# 集群相关配置
port 7000
cluster-enabled yes
cluster-config-file nodes-7000.conf
cluster-node-timeout 5000
# 配置Pid文件
pidfile /var/run/redis_7000.pid
# 开启AOF
appendonly yes
appendfilename "appendonly7000.aof"

对应端口的配置文件需要修改相关端口配置,不同机器也需要配置不同的IP地址。

启动Redis

启动个台机器上的Redis

# 3.25节点
/home/gary/redis-6.2.4/src/redis-server /home/gary/redis-6.2.4/cluster/redis7000.conf
/home/gary/redis-6.2.4/src/redis-server /home/gary/redis-6.2.4/cluster/redis7001.conf
/home/gary/redis-6.2.4/src/redis-server /home/gary/redis-6.2.4/cluster/redis7002.conf
# 3.26节点
/home/gary/redis-6.2.4/src/redis-server /home/gary/redis-6.2.4/cluster/redis7000.conf
/home/gary/redis-6.2.4/src/redis-server /home/gary/redis-6.2.4/cluster/redis7001.conf
/home/gary/redis-6.2.4/src/redis-server /home/gary/redis-6.2.4/cluster/redis7002.conf

启动好之后才能把机器加入集群配置。

创建集群

在Redis3或者4的时候,创建集群需要使用redis-trib.rb,不过新版本已经不需要了,创建集群更加简单,直接使用redis-cli命令来创建集群。

./src/redis-cli --cluster create 10.181.3.25:7000 10.181.3.25:7001 \
10.181.3.25:7002 10.181.3.26:7000 10.181.3.26:7001 10.181.3.26:7002 \
--cluster-replicas 1

测试集群连接

# 连接集群测试
./src/redis-cli -h 10.181.3.25 -p 7000 -c
# 集群状态
> cluster nodes

成功结果

84656ca7bba9a7da82b1177ea5b5678e70eb0139 10.181.3.26:7002@17002 slave 61236bdc80eb7067591a7b7a8d8ee3d04bec80db 0 1623754839000 1 connected
3a383bc597bc79da479f85fa75ac18093237ea7f 10.181.3.26:7000@17000 master - 0 1623754839839 4 connected 5461-10922
41f9ded60d05180baa20ae69bbcd517532f5c48f 10.181.3.25:7001@17001 master - 0 1623754839000 2 connected 10923-16383
4a8d0026e6c5cc98494a47e63909c8407819b423 10.181.3.26:7001@17001 slave 41f9ded60d05180baa20ae69bbcd517532f5c48f 0 1623754838532 2 connected
f8d48552c3e3e225de695303e0f002590a55f87e 10.181.3.25:7002@17002 slave 3a383bc597bc79da479f85fa75ac18093237ea7f 0 1623754840542 4 connected
61236bdc80eb7067591a7b7a8d8ee3d04bec80db 10.181.3.25:7000@17000 myself,master - 0 1623754837000 1 connected 0-5460

常见错误

一直卡在

Waiting for the cluster to join..

需要检查各个节点7000-7002和17000-17002端口是否互通,另外pidfile /var/run/redis_7000.pid没有配置也可能造成一直等待join。

[ERR] Node 10.181.3.25:7001 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.

如果中途有创建失败,再次调用命令创建,会提示不为空的错误,需要删除nodes-*、dump.rdb、appendonly*等文件

# 删除nodes-*、dump.rdb、appendonly*
rm nodes-* appendonly* dump.rdb

简单单机集群

另外Redis提供一种单机创建3主3从的单机集群工具(cd ./utils/create-cluster目录下):

# 启动节点
./create-cluster start
# 创建集群
./create-cluster create
# 停止集群
./create-cluster stop
# 连接集群测试
./src/redis-cli -p 30001 -c
# 集群状态
> cluster nodes

默认端口是:30001-30006,一共六个节点。

测试简单集群

连接到集群

./src/redis-cli -p 30001 -c
上一篇
下一篇