Docker安装RedisStack
Docker安装RedisStack
- 1. 前置准备
- 2. 拉取并启动容器
- 3. 验证安装
- 4.简单使用
- 5. 验证 Stack 特有功能 (JSON & Search)
- 1. 测试 JSON 存储:
- 2. 测试搜索功能:
- 6. 常用维护命令
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 RunAs2. 拉取并启动容器
打开 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. 验证安装
检查容器状态:
dockerps若看到
redis-stack状态为Up,则启动成功。测试连接:
docker exec-it redis-stack redis-cliping若返回
PONG,说明服务正常。访问可视化界面:
在浏览器打开http://localhost:8001,即可使用 Redis Insight 进行图形化管理。
4.简单使用
- 进入容器内部:
docker exec-it redis-stack redis-cli - 基础命令测试:
设置一个键值对 SET mykey"Hello Redis Stack"获取值 GET mykey 查看当前所有键 KEYS * 退出 CLIexit
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 PREFIX1user: SCHEMA $.name AS name TEXT $.age AS age NUMERIC $.tags AS tags TAGON 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 dockerstartredis-stack - 删除容器(如需重新配置):
dockerrm-f redis-stack
