Docker安装RedisStack
1. 前置准备
- 安装 Docker Desktop:确保你的 Windows 10/11 已安装并运行 Docker Desktop。
- 启用 WSL 2:Docker Desktop 在 Windows 上依赖 WSL 2 后端,请确保已在 PowerShell 中执行
wsl --install并重启电脑。
自定义安装路径:
# 定义安装包路径(请确保文件存在于此路径,或者修改为你实际下载的路径)
$InstallerPath = ".\Docker Desktop Installer.exe"
# 定义安装参数数组
# 注意:每个参数和它的值最好作为数组的独立元素,或者用空格隔开的字符串
$Arguments = @(
"install",
"--accept-license",
"--installation-dir=D:\DockerDesktop\Docker",
"--wsl-default-data-root=D:\DockerDesktop\Docker\wsl",
"--windows-containers-default-data-root=D:\DockerDesktop\Docker\data"
)
# 执行安装
# -Wait: 等待安装完成
# -Verb RunAs: 以管理员身份运行(如果当前PS不是管理员,这会弹窗提权)
Start-Process -FilePath $InstallerPath -ArgumentList $Arguments -Wait -Verb RunAs
2. 拉取并启动容器
打开 PowerShell 或 CMD,执行以下命令即可一键启动 Redis Stack:
docker run -d --name redis-stack -p 6379:6379 -p 8001:8001 redis/redis-stack:latest
参数说明:
-d: 后台运行容器。--name redis-stack: 指定容器名称。-p 6379:6379: 映射 Redis 服务端口,应用程序通过此端口连接。-p 8001:8001: 映射 Redis Insight 可视化界面端口,可通过浏览器访问http://localhost:8001管理数据。redis/redis-stack:latest: 使用官方最新镜像。
3. 验证安装
-
检查容器状态:
docker ps若看到
redis-stack状态为Up,则启动成功。

-
测试连接:
docker exec -it redis-stack redis-cli ping若返回
PONG,说明服务正常。

-
访问可视化界面:
在浏览器打开http://localhost:8001,即可使用 Redis Insight 进行图形化管理。
4.简单使用
- 进入容器内部:
docker exec -it redis-stack redis-cli - 基础命令测试:
设置一个键值对 SET mykey "Hello Redis Stack" 获取值 GET mykey 查看当前所有键 KEYS * 退出 CLI exit
5. 验证 Stack 特有功能 (JSON & Search)
Redis Stack 的核心优势在于支持 RedisJSON 和 RediSearch 模块,这是普通 Redis 不具备的。
1. 测试 JSON 存储:
在 `redis-cli` 中执行:
```bash
存储一个 JSON 对象
JSON.SET user:1 $ '{"name":"Alice","age":30,"tags":["developer","docker"]}'
查询特定字段
JSON.GET user:1 $.name
```
*若返回 `"Alice"`,说明 JSON 模块工作正常。*
2. 测试搜索功能:
Redis Stack 允许对 JSON 数据进行全文检索。
- 创建索引 (Create Index)
首先定义一个名为idx:users的索引,指定对 JSON 路径中的字段进行索引。
FT.CREATE idx:users ON JSON PREFIX 1 user: SCHEMA $.name AS name TEXT $.age AS age NUMERIC $.tags AS tags TAG
ON JSON: 指定数据源为 JSON 格式。PREFIX 1 user:: 只索引以user:开头的 Key。SCHEMA: 定义字段映射:$.name映射为name(文本类型,支持全文检索)。$.age映射为age(数值类型,支持范围查询)。$.tags映射为tags(标签类型,支持精确匹配)。
- 插入测试数据 (Insert Data)
使用JSON.SET插入三条模拟用户数据:
用户 1:Alice,30岁,开发者
JSON.SET user:1 $ '{"name":"Alice Smith","age":30,"tags":["developer","docker"]}'
用户 2:Bob,25岁,设计师
JSON.SET user:2 $ '{"name":"Bob Jones","age":25,"tags":["designer","ui"]}'
用户 3:Charlie,35岁,开发者兼经理
JSON.SET user:3 $ '{"name":"Charlie Brown","age":35,"tags":["developer","manager"]}'
- 执行搜索测试 (Search Queries)
场景 A:全文检索名字中包含 “Alice” 的用户
FT.SEARCH idx:users "@name:Alice"
- 预期结果:返回
user:1的完整 JSON 数据。

场景 B:组合查询(年龄大于 28 且 标签包含 “developer”)
FT.SEARCH idx:users "@age:[28 +inf] @tags:{developer}"
- 预期结果:返回
user:1(30岁) 和user:3(35岁),排除user:2(25岁)。 - 注意:
[28 +inf]表示大于等于 28,{developer}表示标签精确匹配。

场景 C:模糊搜索名字中包含 “Brown” 的用户
FT.SEARCH idx:users "@name:Brown"
- 预期结果:返回
user:3。

-
清理环境 (可选)
测试完成后,若需删除索引和数据:删除索引及关联文档 FT.DROPINDEX idx:users DD 手动删除 Key (若 DROPINDEX 未自动清理) DEL user:1 user:2 user:3
6. 常用维护命令
- 查看日志(排查启动错误):
docker logs redis-stack - 停止/重启容器:
docker stop redis-stack docker start redis-stack - 删除容器(如需重新配置):
docker rm -f redis-stack

2735

被折叠的 条评论
为什么被折叠?



