腾讯云服务器安装Redis Stack图文教程
版权声明
- 本文原创作者:谷哥的小弟
- 作者博客地址:http://blog.csdn.net/lfdfhl
前置知识
在腾讯云服务器上安装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使用情况;详情如下:
[root@VM-0-13-opencloudos ~]# cat /etc/os-releaseNAME="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 --versionDocker version28.0.1-20241223130549-3b49deb, build 3b49deb[root@VM-0-13-opencloudos ~]# free -htotal usedfreeshared buff/cache available Mem:3.5Gi 862Mi 285Mi3.1Mi2.6Gi2.7Gi Swap:1.0Gi6.0Mi1.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 容器;命令如下:
dockerrun-d\--nameredis-stack-server\-p6379:6379\-vredis-stack-data:/data\-eREDIS_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 服务本身是否能够正常响应;命令如下:
dockerexec-itredis-stack-server redis-cli-a'YourStrongPassword'比如:
dockerexec-itredis-stack-server redis-cli-a'abc123%%ABC'
继续执行命令PING;图示如下:
从上图可以看出,执行PING后返回PONG,说明 Redis Stack 服务已经正常运行。
继续执行命令MODULE LIST;结果如下:
[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 thecommandline interface may not be safe.127.0.0.1:6379>PING PONG127.0.0.1:6379>MODULE LIST1)1)"name"2)"ReJSON"3)"ver"4)(integer)208095)"path"6)"/opt/redis-stack/lib/rejson.so"7)"args"8)(empty array)2)1)"name"2)"timeseries"3)"ver"4)(integer)112065)"path"6)"/opt/redis-stack/lib/redistimeseries.so"7)"args"8)(empty array)3)1)"name"2)"search"3)"ver"4)(integer)210205)"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)208165)"path"6)"/opt/redis-stack/lib/redisbloom.so"7)"args"8)(empty array)5)1)"name"2)"redisgears_2"3)"ver"4)(integer)200205)"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)15)"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 后,先检查服务器自身的防火墙状态,命令如下:
firewall-cmd--state图示如下:
执行结果说明 阿里云服务器上的 firewalld 当前没有运行。也就是说,服务器本机这一层目前没有通过 firewalld 对 6379 端口进行拦截。
首先,请找到云服务器的防火墙配置模块;图示如下:
添加规则,图示如下:
请特别注意来源的填写,固定格式为:公网 IPv4 + /32,表示允许哪个IP访问Redis Stack。此处,为了方便测试我填写了自己的电脑的公网IP。
各位小伙伴可以在DOS中执行命令nslookup myip.opendns.com resolver1.opendns.com获取自己的公网IP;图示如下:
添加完毕,图示如下:
为了验证,请在自己的 Windows 电脑上测试能否正常访问腾讯云服务器的6379 端口。请在DOS中输入以下命令:
powershell-Command"Test-NetConnection 你的云服务器IP -Port 6379"例如:
powershell-Command"Test-NetConnection 43.136.136.231 -Port 6379"图示如下:
至此,我们已经成功实现了本地windows电脑到云端服务器6379端口的访问。
查看Redis Stack中的数据
输入如下命令进入redis-cli;
dockerexec-itredis-stack-server redis-cli--raw再执行命令AUTH 你的Redis密码进行认证,认证图示如下:
然后,执行命令扫描Redis的键;命令如下:
SCAN0MATCH chat-memory:* COUNT100该用于逐步扫描Redis中的键,并筛选名称以chat-memory:开头的键。COUNT 100表示建议每次扫描约100个键,用于查找Spring AI写入的对话记忆数据。图示如下:
接下来,执行命令查看用户id为u123的对话记录,命令如下:
FT.SEARCH chat-memory-idx'@conversation_id:{u123}'LIMIT0100命令执行结果如下:
