腾讯云服务器安装Redis Stack图文教程


版权声明


前置知识

在腾讯云服务器上安装Redis Stack前,需要清楚地知道容器和镜像。

镜像(Image) 是一个只读的软件模板,里面已经打包好了运行某个程序所需的文件、依赖和环境。比如,即将下载的redis/redis-stack-server:latest就是 Redis Stack Server 的镜像。

容器(Container) 是根据镜像创建出来的运行实例。也就是说,Docker 会以镜像为基础创建一个独立的运行环境,然后在里面启动 Redis Stack Server。

和 Java 类比也比较容易理解:镜像类似 Java 的"类";容器类似根据类创建出来的"对象"。当然这个类比并不完全严格,但非常适合理解二者的关系:一个镜像可以创建多个容器,就像一个类可以创建多个对象。

环境准备

首先,执行命令cat /etc/os-release确认操作系统版本;然后,再执行命令docker --version查看是否已经安装Docker;最后执行命令free -h查看服务器的内存和Swap使用情况;详情如下:

bash 复制代码
[root@VM-0-13-opencloudos ~]# cat /etc/os-release
NAME="OpenCloudOS"
VERSION="9.4"
ID="opencloudos"
ID_LIKE="opencloudos"
VERSION_ID="9.4"
PLATFORM_ID="platform:oc9"
PRETTY_NAME="OpenCloudOS 9.4"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:opencloudos:opencloudos:9"
HOME_URL="https://www.opencloudos.org/"
BUG_REPORT_URL="https://bugs.opencloudos.tech/"
[root@VM-0-13-opencloudos ~]# docker --version
Docker version 28.0.1-20241223130549-3b49deb, build 3b49deb
[root@VM-0-13-opencloudos ~]# free -h
               total        used        free      shared  buff/cache   available
Mem:           3.5Gi       862Mi       285Mi       3.1Mi       2.6Gi       2.7Gi
Swap:          1.0Gi       6.0Mi       1.0Gi
[root@VM-0-13-opencloudos ~]# 

图示如下:

从此处可以看出:通过以上三条命令可以确认,当前腾讯云服务器运行的是 OpenCloudOS 9.4,已经安装 Docker 28.0.1,因此后续部署 Redis Stack 无需再安装 Docker;服务器总内存约为 3.5GiB,当前可用内存约为 2.7GiB,并配置了 1GiB Swap,现有资源可以满足 Redis Stack 在学习和测试场景下的基本运行需求。

下载Redis Stack镜像

利用命令docker ps查看当前正在运行的 Docker 容器。如果 Docker 服务正常,它会返回容器列表;即使当前没有任何容器,也会正常显示表头;图示如下:

从命令执行结果可以看出:Docker 服务已经正常运行,只是当前没有正在运行的容器。

执行命令docker pull redis/redis-stack-server:latest下载Redis Stack Server镜像;图示如下:

至此,已经成功下载了最新版 redis/redis-stack-server 镜像。

接下来,执行命令docker images确认镜像是否已经存在;图示如下:

从上图可以看出,Redis Stack Server 镜像已经成功下载到腾讯云服务器,大小约为 520MB。hello-world 是服务器上原来已有的 Docker 测试镜像,与 Redis Stack 无关,可以暂时不用管。

先不要急着创建 Redis Stack 容器,先执行命令ss -lntp | grep 6379检查服务器的 6379 端口是否已经被其他 Redis 或程序占用,因为 Redis Stack 默认也使用这个端口;图示如下:

执行该命令后没有任何输出,说明服务器当前没有程序监听 TCP 6379 端口,因此后面可以把 Redis Stack 映射到这个端口。

到目前为止:Redis Stack 镜像已经下载完成,Docker 服务正常,6379 端口可用,因此下一步就可以创建并启动 Redis Stack 容器。

创建Redis Stack 容器

创建并启动 Redis Stack 容器;命令如下:

bash 复制代码
docker run -d \
  --name redis-stack-server \
  -p 6379:6379 \
  -v redis-stack-data:/data \
  -e REDIS_ARGS="--requirepass YourStrongPassword" \
  redis/redis-stack-server:latest

请把命令中的YourStrongPassword替换成你的密码比如abc123%%ABC

图示如下:

执行该命令后得到表示Docker 容器 ID。它说明 Docker 已经根据 Redis Stack 镜像成功创建了 redis-stack-server 容器,并发出了后台启动指令。继续执行命令docker ps检查容器当前状态;图示如下:

从输出可以看出,redis-stack-server 容器已经正常运行,STATUS 为 Up 2 minutes;同时端口映射为 0.0.0.0:6379->6379/tcp,说明服务器的 6379 端口已经映射到容器中的 Redis Stack 服务。

最后,通过命令验证 Redis Stack 服务本身是否能够正常响应;命令如下:

bash 复制代码
docker exec -it redis-stack-server redis-cli -a 'YourStrongPassword'

比如:

bash 复制代码
docker exec -it redis-stack-server redis-cli -a 'abc123%%ABC'

继续执行命令PING;图示如下:

从上图可以看出,执行PING后返回PONG,说明 Redis Stack 服务已经正常运行。

继续执行命令MODULE LIST;结果如下:

bash 复制代码
[root@VM-0-13-opencloudos ~]# docker exec -it redis-stack-server redis-cli -a 'abc123%%ABC'
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6379> PING
PONG
127.0.0.1:6379> MODULE LIST
1) 1) "name"
   2) "ReJSON"
   3) "ver"
   4) (integer) 20809
   5) "path"
   6) "/opt/redis-stack/lib/rejson.so"
   7) "args"
   8) (empty array)
2) 1) "name"
   2) "timeseries"
   3) "ver"
   4) (integer) 11206
   5) "path"
   6) "/opt/redis-stack/lib/redistimeseries.so"
   7) "args"
   8) (empty array)
3) 1) "name"
   2) "search"
   3) "ver"
   4) (integer) 21020
   5) "path"
   6) "/opt/redis-stack/lib/redisearch.so"
   7) "args"
   8) 1) "MAXSEARCHRESULTS"
      2) "10000"
      3) "MAXAGGREGATERESULTS"
      4) "10000"
4) 1) "name"
   2) "bf"
   3) "ver"
   4) (integer) 20816
   5) "path"
   6) "/opt/redis-stack/lib/redisbloom.so"
   7) "args"
   8) (empty array)
5) 1) "name"
   2) "redisgears_2"
   3) "ver"
   4) (integer) 20020
   5) "path"
   6) "/opt/redis-stack/lib/redisgears.so"
   7) "args"
   8) 1) "v8-plugin-path"
      2) "/opt/redis-stack/lib/libredisgears_v8_plugin.so"
6) 1) "name"
   2) "RedisCompat"
   3) "ver"
   4) (integer) 1
   5) "path"
   6) "/opt/redis-stack/lib/rediscompat.so"
   7) "args"
   8) (empty array)
127.0.0.1:6379> 

从 MODULE LIST 的输出可以看出 Redis Stack的相关模块,比如 Spring AI 2.0 的 Redis 对话记忆所依赖的两项主要能力ReJSON。

现在,执行exit命令退出redis-cli;图示如下:

开放6379 端口

退出 redis-cli 后,先检查服务器自身的防火墙状态,命令如下:

bash 复制代码
firewall-cmd --state

图示如下:

执行结果说明 阿里云服务器上的 firewalld 当前没有运行。也就是说,服务器本机这一层目前没有通过 firewalld 对 6379 端口进行拦截。

首先,请找到云服务器的防火墙配置模块;图示如下:

添加规则,图示如下:

请特别注意来源的填写,固定格式为:公网 IPv4 + /32,表示允许哪个IP访问Redis Stack。此处,为了方便测试我填写了自己的电脑的公网IP。

各位小伙伴可以在DOS中执行命令nslookup myip.opendns.com resolver1.opendns.com获取自己的公网IP;图示如下:

添加完毕,图示如下:

为了验证,请在自己的 Windows 电脑上测试能否正常访问腾讯云服务器的6379 端口。请在DOS中输入以下命令:

bash 复制代码
powershell -Command "Test-NetConnection 你的云服务器IP -Port 6379"

例如:

bash 复制代码
powershell -Command "Test-NetConnection 43.136.136.231 -Port 6379"

图示如下:

至此,我们已经成功实现了本地windows电脑到云端服务器6379端口的访问。

查看Redis Stack中的数据

输入如下命令进入redis-cli;

bash 复制代码
docker exec -it redis-stack-server redis-cli --raw

再执行命令AUTH 你的Redis密码进行认证,认证图示如下:

然后,执行命令扫描Redis的键;命令如下:

bash 复制代码
SCAN 0 MATCH chat-memory:* COUNT 100

该用于逐步扫描Redis中的键,并筛选名称以chat-memory:开头的键。COUNT 100表示建议每次扫描约100个键,用于查找Spring AI写入的对话记忆数据。图示如下:

接下来,执行命令查看用户id为u123的对话记录,命令如下:

bash 复制代码
FT.SEARCH chat-memory-idx '@conversation_id:{u123}' LIMIT 0 100

命令执行结果如下:

相关推荐
发量惊人的中年网工1 小时前
中小企业网络管理进阶:从设备堆叠到统一管理
服务器·网络·安全·网络安全·php·制造
RisunJan2 小时前
Linux命令-talk(终端实时对话)
linux·运维·服务器
NeilYuen2 小时前
【vemory】高性能KV存储AOF方案设计
linux·c++·redis·缓存
三言老师3 小时前
Rocky Linux 8.6 整机系统备份与迁移方案文档文档用途
linux·运维·服务器·网络
daad7773 小时前
用 HackRF + GNU Radio 制作 FM 发射机:从 WAV 到 103 MHz 空中信号
服务器·gnu·fm
我星期八休息4 小时前
网络编程—NAT、代理服务与内网穿透
linux·服务器·网络·网络协议
天疆说4 小时前
02 API 鉴权与腾讯云公网桥接:把局域网模型服务安全地挂到域名上
安全·云计算·腾讯云
袅沫5 小时前
Nginx中部署多个前端项目——区分路径
服务器·前端
fei_sun5 小时前
UVM中的TLM1.0通信
运维·服务器·uvm