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