容器化部署 Redis Cluster 集群的节点添加、删除和可视化监控
- Redis Cluster 集群回顾
- openEuler 系统查看端口是否被占用
- Redis Cluster 验证
- Redis CLI 客户端命令验证
- Redis GUI 工具验证
- 宿主机安装 RedisInsight
- Docker 容器化部署 RedisInsight
- 添加集群节点
- 启动 Reids 扩容服务
- 添加 Redis Master 主节点
- 添加 Redis Slave/Replica 从节点
- 删除集群节点
- 删除 Redis Master 主节点
- 删除 Redis Slave/Replica 从节点
- 重新分配槽位(slots)
- Redis 新特性
- RedisMod 简介
- Redis 可视化监控
- 使用 RedisMod
Redis Cluster 集群回顾
上一篇文章 中我们讲解了在 openEuler 系统中容器化部署 Redis Cluster 集群模式,部署环境和镜像信息如下:
openEuler 22.03 lts x86_64,规格4c8g,hdd 100G硬盘redis:7.2.3-alpine3.18Docker Engine - Community 24.0.7Docker Compose version v2.21.0
查看 redis 集群运行状态如下:
[root@redis redis-cluster]# docker compose version
Docker Compose version v2.21.0
[root@redis redis-cluster]# docker compose ls
NAME STATUS CONFIG FILES
redis-cluster running(6) /home/jeff/docker/redis-cluster/redis-compose.yaml
[root@redis redis-cluster]# docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0b1298e268c8 redis:7.2.3-alpine3.18 "docker-entrypoint.s…" 3 days ago Up 3 days redis6979
6ab62db8b863 redis:7.2.3-alpine3.18 "docker-entrypoint.s…" 3 days ago Up 3 days redis6679
89db0baf10ef redis:7.2.3-alpine3.18 "docker-entrypoint.s…" 3 days ago Up 3 days redis6879
bb52cfab5a13 redis:7.2.3-alpine3.18 "docker-entrypoint.s…" 3 days ago Up 3 days redis6579
5648246b22fc redis:7.2.3-alpine3.18 "docker-entrypoint.s…" 3 days ago Up 3 days redis6779
626f5286a324 redis:7.2.3-alpine3.18 "docker-entrypoint.s…" 3 days ago Up 3 days redis6479
- 进入
master节点redis6479
[root@redis redis-cluster]# docker container exec -it redis6479 /bin/sh
/data # redis-cli -c -h 172.17.97.27 -p 6479 -a '123456' --raw
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
172.17.97.27:6479>
- 查看
redis cluster信息
172.17.97.27:6479> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:1
cluster_stats_messages_ping_sent:78
cluster_stats_messages_pong_sent:74
cluster_stats_messages_sent:152
cluster_stats_messages_ping_received:69
cluster_stats_messages_pong_received:78
cluster_stats_messages_meet_received:5
cluster_stats_messages_received:152
total_cluster_links_buffer_limit_exceeded:0
- 查看
redis cluster集群节点信息
172.17.97.27:6479> cluster nodes
dd899a703c3625cc520a63b7d7ff43cd858fee2d 172.17.97.27:6679@16679 master - 0 1699610730191 3 connected 10923-16383
03d72c6c044eca519a8d23819d11378e29a08a5f 172.17.97.27:6479@16479 myself,master - 0 1699610730000 1 connected 0-5460
66b4a1b3a2a2228f2f5e29685d086ea91fb6f088 172.17.97.27:6579@16579 master - 0 1699610732202 2 connected 5461-10922
f3a91b7a89526e176c9b910e8aaddc6a3053779a 172.17.97.27:6779@16779 slave dd899a703c3625cc520a63b7d7ff43cd858fee2d 0 1699610730000 3 connected
95664c7b93b8c750e88c25cf008861dbbbf13af2 172.17.97.27:6879@16879 slave 03d72c6c044eca519a8d23819d11378e29a08a5f 0 1699610731196 1 connected
83e58fd778bf873129d7c97cb0f85e3fefb86b6c 172.17.97.27:6979@16979 slave 66b4a1b3a2a2228f2f5e29685d086ea91fb6f088 0 1699610729185 2 connected
这是我们之前 docker 容器化环境搭建的 redis cluster 环境信息,接下来我们使用 redis-cli 验证下基本的数据存储。
openEuler 系统查看端口是否被占用
此处我们可以使用 lsof 查看 redis 端口占用情况。
dnf安装lsof
[root@redis redis-cluster]# dnf install -y lsof
Last metadata expiration check: 0:32:37 ago on 2023年11月10日 星期五 13时51分50秒.
Dependencies resolved.
================================================================================================================================
Package Architecture Version Repository Size
================================================================================================================================
Installing:
lsof x86_64 4.94.0-1.oe2203 OS 93 k
Transaction Summary
================================================================================================================================
Install 1 Package
Total download size: 93 k
Installed size: 193 k
Downloading Packages:
lsof-4.94.0-1.oe2203.x86_64.rpm 101 kB/s | 93 kB 00:00
--------------------------------------------------------------------------------------------------------------------------------
Total 69 kB/s | 93 kB 00:01
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : lsof-4.94.0-1.oe2203.x86_64 1/1
Verifying : lsof-4.94.0-1.oe2203.x86_64 1/1
Installed:
lsof-4.94.0-1.oe2203.x86_64
Complete!
- 指定端口查看,
redis的master节点redis6479
[root@redis redis-cluster]# lsof -i:6479
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
redis-ser 45318 systemd-coredump 7u IPv4 118707 0t0 TCP *:6479 (LISTEN)
redis-ser 45318 systemd-coredump 8u IPv6 118708 0t0 TCP *:6479 (LISTEN)
redis-ser 45318 systemd-coredump 23u IPv4 124974 0t0 TCP redis.mshome.net:6479->redis.mshome.net:45068 (ESTABLISHED)
redis-ser 45549 systemd-coredump 23u IPv4 122473 0t0 TCP redis.mshome.net:45068->redis.mshome.net:6479 (ESTABLISHED)
- 查看所有监听端口
lsof -i
注意:上述命令均需要 root 权限才能执行。
Redis Cluster 验证
Redis CLI 客户端命令验证
- 添加一个
test键,值为"hello,world"
172.17.97.27:6479> set test "hello,world"
-> Redirected to slot [6918] located at 172.17.97.27:6579
OK
172.17.97.27:6579> get test
hello,world
172.17.97.27:6579> PING
PONG
172.17.97.27:6579> exit
通过上面的信息操作验证,redis cli 命令操作正常。
Redis GUI 工具验证
Redis 客户端桌面工具这里我们使用官方推出的 RedisInsight。
RedisInsight 工具有两种模式,分别是:宿主机直接下载安装或者采用 docker 容器化部署。
宿主机安装 RedisInsight
注意:目前 RedisInsight 支持 Redis 版本 4 及更高版本。
RedisInsight v2.36,https://github.com/RedisInsight/RedisInsight/releases/tag/2.36.0The best Redis GUI,https://redis.com/redis-enterprise/redis-insight/

此处为了省事,我就不安装桌面客户端模式了,感兴趣的小伙伴自行下载安装。
Docker 容器化部署 RedisInsight
除了宿主机安装 RedisInsight for windows 桌面工具方式,此处还可以直接下载 docker 镜像 redislabs/redisinsight:latest,执行命令下载:
PS C:\Users\Jeffrey.Chai> docker pull redislabs/redisinsight
Using default tag: latest
latest: Pulling from redislabs/redisinsight
bd159e379b3b: Pull complete
de08aeb7fd50: Pull complete
7091270c8142: Pull complete
2f44657947b6: Pull complete
55e2b120f544: Pull complete
2334b37e06e6: Pull complete
d31ad784df66: Pull complete
d88ac93467d5: Pull complete
62e1f12ea619: Pull complete
92457786662e: Pull complete
eaeaaab2bb3c: Pull complete
4f4fb700ef54: Pull complete
61895bd73f82: Pull complete
cd4f466154c9: Pull complete
669853c54f83: Pull complete
Digest: sha256:b03ab1426d0d861b0370e05ee670a8819c8ab36b987ca59e4a3e92e0038d089c
Status: Downloaded newer image for redislabs/redisinsight:latest
docker.io/redislabs/redisinsight:latest
运行容器:
PS E:\docker-volume> ls
目录: E:\docker-volume
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2023/4/11 14:15 database
d----- 2023/7/28 13:44 esdata
da---- 2023/9/20 16:56 redisdata
d----- 2023/11/15 15:19 redisinsight
PS E:\docker-volume> docker run -d --name redisinsight -v ./redisinsight:/db -p 8001:8001 redislabs/redisinsight
7b2aac61d63b7b54eb774c9cbcb820758e4452401325ea3398e9fa4e183c3163
本机使用的是 windows 环境,此处新建目录 E:\docker-volume\redisinsight,上面运行的命令挂载 volume 到指定目录文件夹。
查看运行的容器 redisinsight,输出如下信息:
PS E:\docker-volume> docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7b2aac61d63b redislabs/redisinsight "bash ./docker-entry…" 7 minutes ago Up 7 minutes 0.0.0.0:8001->8001/tcp redisinsight
浏览器输入地址:http://localhost:8001/ 显示页面如下:

翻译信息如下:

点击【CONFIRM/确认】进入后页面显示入下:

此处我们已经有 redis-cluster-server,选择【I already have a database】

- 单实例
Redis连接
由于我本地 docker for windows/wsl2 环境运行了一个单实例的 dapr_redis,如下所示:

此处我们选择第一项【Connect to a Redis Database】,先尝试连接下该实例的 dapr_redis。
查看宿主机 ip 地址:
[root@redis redis-cluster]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:15:5d:03:36:16 brd ff:ff:ff:ff:ff:ff
inet 172.17.97.27/20 brd 172.17.111.255 scope global dynamic noprefixroute eth0
valid_lft 51316sec preferred_lft 51316sec
inet6 fe80::6789:89e4:df04:ad30/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:25:a8:f6:1f brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
输入如下配置信息:
ip: 192.168.2.46port: 6379


点击上面的【dapr_redis】进入如下页面:

- 集群模式
Redis连接
此时我们继续采用 Docker 容器化部署的 RedisInsight 连接 redis-cluster 环境,redis 集群环境信息如下:

选择左上方的【ADD REDIS DATABASE】添加 redis-cluster 连接:

输入 redis.conf 配置信息:
IP:Port => 172.17.97.27:6479Password => 123456

链接 redis-cluster 被拒绝,提示信息如下:
Could not connect: Error 113 connecting to 172.17.97.27:6479. No route to host.
出错原因:redis server 端的防火墙设置了过滤规则。
- 查看防火墙运行状态:
systemctl status firewalld
显示 Active: active (running),说明防火墙在运行状态。

解决办法,关闭防火墙。
- 暂时性关闭
systemctl stop firewalld
- 永久性关闭
systemctl disable firewalld
再次查看防火墙的状态,显示信息如下图:

从上图中可以看到状态信息 Active: inactive (dead) ,说明 firewalld 已经停止运行。此时我们在输入上面信息点击【ADD REDIS DATABASE】即可。
除了使用官方的 Redisinsight GUI 连接访问, 我们还可以使用第三方工具【Another Redis Desktop Manager】连接测试:

连接进入后,显示信息如下:

博文参考:redis 搭建集群,拒绝连接问题解决 => https://blog.csdn.net/youtiantin/article/details/121972562
添加集群节点
注意:下面的添加集群节点操作环节,均需要进入容器内执行才可执行
redis-cli命令,因此在下面的环节中就不做过多说明。
启动 Reids 扩容服务
我们当前的 redis-cluster 环境是 3主3从,现在对该环境进行扩容,变成 4主4从,另外就还需要启动两个 redis-server,由于此处的演示环境是采用 1vm 部署 docker 容器化的 reids 服务,因此这里需要启动 2 个 redis 容器。
规划新扩容的两个 redis 服务服下:
redis7079(当作master节点),对应端口7079;redis7179(当作slave/replica节点),对应端口7179;
注意:实际情况中,更具具体情况编排 redis 端口。
为了现有集群环境风格统一,同样在当前目录下新建两个 redis 分别对应的目录文件夹:
mkdir redis7079 redis7179
准备 redis7079 的 redis.conf 文件:
# 修改为后台启动
#daemonize yes
# 修改端口号
port 7079
# 指定数据文件存储位置
#dir /usr/local/redis-app/7079/
# 开启集群模式
cluster-enabled yes
# 集群节点信息文件配置
cluster-config-file nodes-7079.conf
# 集群节点超时间
cluster-node-timeout 15000
# 去掉bind绑定地址
# bind 127.0.0.1 -::1 (这里没写错就是加#注释掉bind配置)
# 关闭保护模式
protected-mode no
# 开启aof模式持久化
appendonly yes
# 设置连接Redis需要密码123(选配)
requirepass 123456
# 设置Redis节点与节点之间访问需要密码123(选配)
masterauth 123456
可以执行命令依次单个运行 redis,注意 port/端口 编排:
docker run -p 6379:6379 --name redis7079 \
-v /home/jeff/docker/redis-cluster/redis7079/redis.conf:/etc/redis/redis.conf \
-v /home/jeff/docker/redis-cluster/redis7079/data:/data \
-d redis:7.2.3-alpine3.18 redis-server /etc/redis/redis.conf \
--appendonly yes
说明:这里拿一个点举例,其他的类似。
此处为了方便省事,这里就不手动单个运行新扩容的 redis 服务了,直接采用 docker compose 的 yaml 文件动态执行,copy 一份原来的 redis-compose.yaml 文件重命名为 redis-compose-expand.yaml:
cp ./redis-compose.yaml ./redis-compose-expand.yaml
文件 redis-compose-expand.yaml 修改内容如下:
version: '3.8'
services:
redis7079:
network_mode: 'host'
image: redis:7.2.3-alpine3.18
container_name: redis7079
restart: always
command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
logging:
driver: 'json-file'
options:
max-size: '3g'
volumes:
- ./redis6479/data:/data
- ./redis6479/redis.conf:/usr/local/etc/redis/redis.conf
- ./redis6479/logs:/logs
redis7179:
network_mode: 'host'
image: redis:7.2.3-alpine3.18
container_name: redis7179
restart: always
command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
logging:
driver: 'json-file'
options:
max-size: '3g'
volumes:
- ./redis6579/data:/data
- ./redis6579/redis.conf:/usr/local/etc/redis/redis.conf
- ./redis6579/logs:/logs
然后再 copy 一份 redis-build.sh 命名为 redis-build-expand.sh:
cp ./redis-build.sh ./redis-build-expand.sh
文件 redis-build-expand.sh 修改内容如下:
#!/bin/bash
echo "1.创建 redis-app 目录,路径 /usr/local/redis-app/"
cd /usr/local/
sudo mkdir ./redis-app
echo "2.准备 redis7079 节点目录文件"
cd /usr/local/redis-app/
sudo mkdir ./7079
cd /home/jeff/docker/redis-cluster;
sudo mkdir ./redis7079
cp -f ./redis.conf ./redis7079/redis.conf;
sed -i "s/6379/7079/g" ./redis7079/redis.conf;
cd ./redis7079
sudo rm -rf ./redis7079/data;
sudo rm -rf ./redis7079/logs;
echo "3.准备 redis7179 节点目录文件"
cd /usr/local/redis-app/
sudo mkdir ./7179
cd /home/jeff/docker/redis-cluster;
sudo mkdir ./redis7179
cp -f ./redis.conf ./redis7179/redis.conf;
sed -i "s/6379/7179/g" ./redis7179/redis.conf;
cd ./redis7179
sudo rm -rf ./redis7179/data;
sudo rm -rf ./redis7179/logs;
echo "4.指定 redis-compose-expand.yaml 文件执行 docker compose 部署"
cd /home/jeff/docker/redis-cluster;
docker compose -f redis-compose-expand.yaml up -d
准备好上面环节后,此时执行 ./redis-build-expand.sh 脚本启动 redis 扩容服务。
查看 redis 新扩容的容器服务是否启动:
docker container ls
添加 Redis Master 主节点
规划的主节点:172.17.97.27:7079
- 添加主节点
使用如下命令即可添加节点将一个新的节点添加到
redis-cluster集群中。
# -a 密码认证(没有密码不用带此参数)
# --cluster add-node 添加节点 新节点IP:新节点PORT 任意存活节点IP:任意存活节点PORT
./bin/redis-cli -a 123456 --cluster add-node 172.17.97.27:7079 172.17.97.27:6479
此时我们使用 cluster nodes 命令查看集群信息表,可以看到 7079 已经被添加到了新的集群中了,但是 7079 并且没有任何的槽位信息,这时就需要迁移槽位(slots)。
- 迁移主节点槽位
使用如下命令将其它主节点的分片迁移到当前节点中。
# -a 密码认证(没有密码不用带此参数)
# --cluster reshard 槽位迁移 从节点IP:节点端口,迁移槽位到当前节点中
./bin/redis-cli --cluster reshard 172.17.97.27:6879
输入完成后会打印一片执行计划给你看,输入 yes 就会把槽位与数据全部迁移到新节点了。
说明:从原来的
redis-cluster中任意找一个从节点即可。
迁移完毕后再 查看集群信息(cluster nodes) 可以看到新扩展的主节点 7079 已经添加了槽位了。
添加 Redis Slave/Replica 从节点
规划的从节点:172.17.97.27:7179
同上操作,此处我们也需要把该从节点添加到 redis-cluster 集群环境中。
- 添加从节点
使用如下命令即可添加节点将一个新的节点添加到
redis-cluster集群中。
# -a 密码认证(没有密码不用带此参数)
# --cluster add-node 添加节点 新节点IP:新节点端口 任意存活节点IP:任意存活节点端口
./bin/redis-cli -a 123456 --cluster add-node 172.17.97.27:7179 172.17.97.27:6479
执行命令 cluster nodes 查看集群节点,可以看到 7179 节点已经添加进去了,但是任何的节点添加都是主节点,那么接下来我们需要把 7179 改成从节点。
- 配置从节点
我们需要使用客户端命令连接到刚刚新添加的 7179 节点的上,并且为它设置一个主节点,设置完毕后再次查看集群节点信息,可以看到 7179 已经是 7079 的从节点了。
进入新添加的 7179 从节点容器服务,执行 redis-cli 连接服务:
# 连接需设为从节点的 Redis 服务
./bin/redis-cli -a 123456 -p 7179
# 将当前节点分配为 8cf44439390dc9412813ad27c43858a6bb53365c 的从节点
CLUSTER REPLICATE 8cf44439390dc9412813ad27c43858a6bb53365c
说明:编号
8cf44439390dc9412813ad27c43858a6bb53365c可以从cluster nodes集群节点查看,该编号代表的是7079主节点。
此处我们就在原来 redis-cluster 集群中添加了新扩容的节点集群,由原来的 3主3从 扩容为 4主4从 集群。
删除集群节点
在删除主节点之前,首先需要对该主节点的槽进行迁移,把该主节点槽位移动到别的主节点中,其次在执行删除该主节点操作。
删除 Redis Master 主节点
- 新增的主节点:
172.17.97.27:7079
进入 7079 节点容器环节,执行如下命令:
./bin/redis-cli -a 123456 --cluster reshard 172.17.97.27:6479
迁移完后再次 查看集群节点/cluster nodes 信息,可以看到 6479 的槽位增加了,7079 的槽位已经没有了。
- 删除主节点
执行如下命令删除节点:
# -a 密码认证(没有密码不用带此参数)
# --cluster del-node 连接任意一个存活的节点IP:连接任意一个存活的节点PORT 要删除的节点ID
./bin/redis-cli -a 123456 --cluster del-node 172.17.97.27:6479 8cf44439390dc9412813ad27c43858a6bb53365c
- 删除 redis 对应的容器
由于要删除的 redis 主节点是 docker 容器化运行的,执行完上面步骤后,先停止该节点再执行删除。
# 先停止 redis 节点容器
docker stop <containerid>
# 再删除 redis 节点容器
docker rmi -f <containerid>
删除 Redis Slave/Replica 从节点
- 新增的从节点:
172.17.97.27:7179
从节点删除比较简单,直接删除即可(因为没有槽位要迁移),现在要删除 7179 节点。
- 删除从节点
执行如下命令删除节点:
# -a 密码认证(没有密码不用带此参数)
# --cluster del-node 连接任意一个存活的节点IP:连接任意一个存活的节点端口 要删除的节点ID
./bin/redis-cli -a 123456 --cluster del-node 172.17.97.27:7179 71cb4fe842e83252f0ffabdc2b31eddb98fd4c89
删除成功后,再次 查看集群节点/cluster nodes ,可以看到 7179 节点已经在集群中消失了。
- 删除 redis 对应的容器
从节点也是 docker 容器化部署的,所以同上操作先停止该节点再执行删除。
重新分配槽位(slots)
注意:重新分配槽位慎用!!!
该功能可以让集群的槽位重新平均分配,但是由于涉及到槽位大量迁移会导致整个 Redis 阻塞停止处理客户端的请求。
执行如下命令重新分配槽位:
# -a 密码认证(没有密码不用带此参数)
# --cluster rebalance 重新分配集群中的槽位
./bin/redis-cli -a 123456 --cluster rebalance 172.17.97.27:6479
槽位(slots)重新分配完成后,再次 查看集群节点/cluster nodes ,可以看到所有的主节点的槽位都被重新分配了。
Redis 新特性
输入命令搜索:
docker search redislabs
输出信息如下:
[root@redis redis-cluster]# docker search redislabs
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
redislabs/redisearch Redis With the RedisSearch module pre-loaded… 60
redislabs/rebloom A probablistic datatypes module for Redis 24 [OK]
redislabs/redisinsight RedisInsight - The GUI for Redis 92
redislabs/rejson RedisJSON - Enhanced JSON data type processi… 53
redislabs/operator 7
redislabs/redis Clustered in-memory database engine compatib… 40
redislabs/operator-internal This repository contains pre-released versio… 1
redislabs/redisgraph A graph database module for Redis 26 [OK]
redislabs/redismod An automated build of redismod - latest Redi… 41 [OK]
redislabs/redistimeseries A time series database module for Redis 12
redislabs/redis-py 5
redislabs/k8s-controller-internal 0
redislabs/k8s-controller 2
redislabs/memtier_benchmark Docker image to run memtier_benchmark 0
redislabs/olmtest Test artefact for OLM CSV 1
redislabs/redis-webcli A tiny Flask app to provide access to Redis … 5 [OK]
redislabs/redisai 6
redislabs/ng-redis-raft Redis with redis raft module 0
redislabs/olm-bundle 0
redislabs/redisgears An automated build of RedisGears 4
redislabs/gesher K8s Admission control proxy 0
redislabs/ng-ci-runner 0
redislabs/rcp-kubectl Container for running kubectl commands (plus… 1
redislabs/redisml A Redis module that implements several machi… 3 [OK]
redislabs/fake-kubelet The pod on this node will always be in the r… 0
RedisMod 简介
Redis 经过多年发展,早已不仅仅是一个单纯的内存数据库了。
有了RedisMod 的支持,Redis 的功能将变得非常强大。
RedisMod 中包含了如下增强模块:
RediSearch:一个功能齐全的搜索引擎;RedisJSON:对 JSON 类型的原生支持;RedisTimeSeries:时序数据库支持;RedisGraph:图数据库支持;RedisBloom:概率性数据的原生支持;RedisGears:可编程的数据处理;RedisAI:机器学习的实时模型管理和部署。
使用 Docker 来安装 Redis,注意下载 Redis 的完全体版本 RedisMod,它是内置了所有模块的增强版 Redis,快速安装操作如下:
- 下载
RedisMod的镜像
docker pull redislabs/redismod:latest
- 在容器中运行
RedisMod服务
docker run -p 6379:6379 --name redismod \
-v /mydata/redismod/data:/data \
-d redislabs/redismod:latest
RedisMod 服务安装完毕,接下来我们就使用 RedisInsight 来管理它了。
Redis 可视化监控
除了官方推出的 RedisInsight 工具可以用来可视化监控,还可以使用 Grafana 来作为 redis 的可视化监控。
- 下载
Grafana的Docker镜像;
docker pull grafana/grafana:latest
- 下载完成后运行
Grafana;
docker run -p 3000:3000 --name grafana \
-d grafana/grafana:latest
- 接下来下载
Prometheus的Docker镜像;
docker pull prom/prometheus:latest
- 在
/mydata/prometheus/目录下创建Prometheus的配置prometheus.yaml文件:
global:
scrape_interval: 5s
- 运行
Prometheus,把宿主机中的配置文件prometheus.yaml挂载到容器中去;
docker run -p 9090:9090 --name prometheus \
-v /mydata/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
-d prom/prometheus
- 进入
grafana容器并安装redis-datasource插件,安装完成后需要重启grafana服务。
docker exec -it grafana /bin/bash
grafana-cli plugins install redis-datasource
使用 RedisMod
- 连接到
redismod需要使用到它的容器IP地址,使用如下命令查看redismod容器的IP地址;
docker inspect redismod | grep IPAddress
- 在
Grafana中配置好Redis数据源,使用admin:admin账户登录,访问地址【http://172.17.97.27:3000/】

- 配置
Redis地址信息,注意使用redismod的容器IP地址;

- 打开
Grafana的Dashboard选择Redis;

- 接下来就可以看到一个非常完善的
Redis监控仪表盘了,基本能满足Redis的监控需求。

欢迎关注/点赞/分享,希望该文章能帮助到您,感兴趣的小伙伴可自行尝试哟。


















