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.简单使用

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

  1. 创建索引 (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 (标签类型,支持精确匹配)。
  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
    docker start redis-stack
    
  • 删除容器(如需重新配置):
    docker rm -f redis-stack
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Listen·Rain

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值