Docker安装RedisStack

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 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. 验证安装

  • 检查容器状态:

    dockerps

    若看到redis-stack状态为Up,则启动成功。

  • 测试连接:

    docker exec-it redis-stack redis-cliping

    若返回PONG,说明服务正常。

  • 访问可视化界面:
    在浏览器打开http://localhost:8001,即可使用 Redis Insight 进行图形化管理。

4.简单使用

  1. 进入容器内部:
    docker exec-it redis-stack redis-cli
  2. 基础命令测试:
    设置一个键值对 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 数据进行全文检索。

  1. 创建索引 (Create Index)
    首先定义一个名为idx:users的索引,指定对 JSON 路径中的字段进行索引。
FT.CREATE idx:users ON JSON PREFIX1user: 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(标签类型,支持精确匹配)。
  1. 插入测试数据 (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"]}'
  1. 执行搜索测试 (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
  1. 清理环境 (可选)
    测试完成后,若需删除索引和数据:

    删除索引及关联文档 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