Redis Stack 安装部署

参考:Run Redis Stack on Docker | Redis

Redis-stack 初体验_redis stack-CSDN博客

【docker】运行redis_docker run redis-stack-server requirepass-CSDN博客

Redis Stack 是一组软件套件,它主要由三部分组成。

一个是 Redis Stack Server,一个是 RedisInsight,一个是 Redis Stack 客户端 SDK。

其中 Redis Stack Server 由 Redis,RedisSearch,RedisJSON,RedisGraph,RedisTimeSeries 和 RedisBloom 组成。

二、通过docker安装redis-stack

要通过Docker安装Redis Stack,请按照以下步骤进行操作:

选择一个Docker镜像:

  • redis/redis-stack 镜像包含了Redis Stack服务器和RedisInsight。此容器最适合本地开发环境,因为您可以直接使用内嵌的RedisInsight来可视化您的数据。

  • redis/redis-stack-server 提供仅包含Redis Stack服务器的镜像。此容器更适合生产环境部署。

以下是使用Docker安装Redis Stack的具体步骤:

安装Redis Stack(包括RedisInsight):

针对redis/redis-stack镜像:

拉取最新版本的Redis Stack镜像,包含Redis Stack服务器与RedisInsight

docker pull redis/redis-stack

镜像下载较慢 请耐心等待

docker run -d --name redis-stack -p 6379:6379 -p 8001:8001 redis/redis-stack:latest

docker run -d --name my-redis-stack -p 8001:8001 -p 6379:6379 -v /path/to/data:/data/redis_data redis/redis-stack

# 其中:
# --name my-redis-stack:为容器指定一个名称

# -d 后台运行

# -p 8001:8001:将主机的8001端口映射到容器的8001端口,供RedisInsight使用
# -p 6379:6379:将主机的6379端口映射到容器的6379端口,供Redis Stack服务器使用
# -v /path/to/data:/data/redis_data :将主机上的指定目录挂载为容器内的/data目录,用于持久化数据(根据实际情况调整路径)

打开浏览器,输入 http://localhost:8001 ,即可使用RedisInsight管理Redis Stack实例

http://192.168.1.243:8001/redis-stack/browser

仅安装Redis Stack服务器:

针对redis/redis-stack-server镜像:

# 拉取最新版本的仅包含Redis Stack服务器的镜像
docker pull redis/redis-stack-server

# 启动Redis Stack服务器容器,附带必要的配置选项(例如端口映射、持久化卷等)
docker run --name my-redis-stack-server -p 6379:6379 -v /path/to/data:/data redis/redis-stack-server

# 其中:
# --name my-redis-stack-server:为容器指定一个名称
# -p 6379:6379:将主机的6379端口映射到容器的6379端口,供Redis Stack服务器使用
# -v /path/to/data:/data:将主机上的指定目录挂载为容器内的/data目录,用于持久化数据(根据实际情况调整路径)

# 管理Redis Stack服务器
您可以使用外部的Redis客户端(如redis-cli)连接到本机的6379端口进行管理,或者在生产环境中搭配独立部署的RedisInsight进行远程监控与管理

环境变量

要传递任意配置更改,您可以通过设置以下环境变量来实现:

  • REDIS_ARGS:Redis的额外参数

  • REDISEARCH_ARGS:搜索和查询功能(RediSearch)的参数

  • REDISJSON_ARGS:JSON(RedisJSON)的参数

  • REDISTIMESERIES_ARGS:时间序列(RedisTimeSeries)的参数

  • REDISBLOOM_ARGS:概率数据结构(RedisBloom)的参数

这些环境变量允许您在启动Redis Stack时为各个组件提供特定的配置参数。当运行Docker容器时,可以使用-e--env标志来设置这些环境变量,如下所示:

docker run --name my-redis-stack -p 8001:8001 -p 6379:6379 -v /path/to/data:/data \ -e REDIS_ARGS="your_redis_args" \ -e REDISEARCH_ARGS="your_redi_search_args" \ -e REDISJSON_ARGS="your_redis_json_args" \ -e REDISTIMESERIES_ARGS="your_redis_timeseries_args" \ -e REDISBLOOM_ARGS="your_redis_bloom_args" \ redis/redis-stack

请将your_redis_argsyour_redi_search_argsyour_redis_json_argsyour_redis_timeseries_argsyour_redis_bloom_args替换为您需要传递给相应组件的实际参数值。参数应遵循各自组件的命令行接口约定,通常以空格分隔。

例如,如果您希望为Redis配置密码保护,并为RediSearch启用日志记录,可以这样设置环境变量:

docker run --name my-redis-stack -p 8001:8001 -p 6379:6379 -v /path/to/data:/data \ -e REDIS_ARGS="--requirepass your_password" \ -e REDISEARCH_ARGS="--verbose" \ redis/redis-stack

redis-cli访问

docker exec -it my-redis-stack redis-cli

INCR mycounter

`redis-cli INCR mycounter` 是一条在 Redis 命令行界面(CLI)中执行的命令,用于对名为 `mycounter` 的键(key)进行原子性递增操作。具体解释如下:

1. **`redis-cli`**: 这是 Redis 客户端工具,它提供了一个交互式命令行环境,允许用户直接与 Redis 服务器通信,发送命令并接收响应。在命令行中输入 `redis-cli` 后回车,将进入 Redis CLI 的交互模式,可以在这里输入 Redis 命令并立即得到执行结果。

2. **`INCR`**: 这是一个 Redis 原语命令,用于对存储在 Redis 中的整数值进行原子性递增。当应用于某个键时,它会查找该键是否存在以及其当前值是否为整数。如果键不存在,则创建该键并将其值初始化为 `1`。如果键已存在且其值为整数,`INCR` 命令将该值加 `1` 并更新键的值。整个递增过程是原子性的,意味着在任何情况下,即使有多个客户端同时尝试对同一键执行 `INCR`,Redis 也能保证递增操作的完整性,不会出现竞态条件导致的数据不一致。

3. **`mycounter`**: 这是待递增的键名(key)。在 Redis 中,键通常是字符串标识符,用于关联一个特定的数据项。在这个例子中,`mycounter` 被用作一个计数器的键名,表示我们想要维护一个名为 `mycounter` 的计数器,每次执行 `INCR` 命令时,该计数器的值就会递增 `1`。

综上所述,执行 `redis-cli INCR mycounter` 命令的效果是:

- 如果 `mycounter` 键之前不存在,命令执行后,该键会被创建,并设置其值为 `1`。
- 如果 `mycounter` 键已经存在且其值为整数(如 `n`),命令执行后,该键的值将被更新为 `n + 1`。

这种递增操作常用于实现计数、统计访问量、累计积分、商品库存减量等场景,特别是在高并发环境下,由于其原子性特性,能够确保计数的准确性和一致性,无需担心并发请求导致的计数错误。

Redis CLI(命令行界面)

Redis CLI 是 Redis 官方提供的命令行工具,用于与 Redis 服务器进行交互,执行命令、查看数据以及进行调试。以下是 Redis CLI 的概述及主要功能:

**基本功能与交互模式**

1. **交互式操作**:默认情况下,运行 `redis-cli` 命令会进入交互式模式,提供一个类似终端的环境,用户可以在此输入 Redis 命令并立即看到执行结果。Redis CLI 内置了基本的行编辑能力,如退格删除、光标移动、历史命令检索等,为用户提供熟悉的输入体验。

2. **非交互式操作**:若要在命令行一次性执行一个或多个 Redis 命令而不进入交互模式,可以在 `redis-cli` 后跟所需执行的命令,用空格分隔。例如:
   ```bash
   redis-cli SET key value GET key
   ```

**特殊启动模式与选项**

除了基本的交互式和非交互式使用外,Redis CLI 提供多种启动选项以支持特殊操作模式:

1. **模拟副本(replica)**:使用 `-r` 或 `--repl` 选项,Redis CLI 可以模拟一个 Redis 副本节点,并打印从主节点接收到的复制流。这对于调试复制问题或理解复制协议非常有用。

   示例:
   ```bash
   redis-cli -h <primary_host> -p <primary_port> --repl
   ```

2. **延迟检测**:使用 `--latency` 选项,Redis CLI 可以检查 Redis 服务器的延迟情况,并显示相关统计信息。这有助于评估服务器性能和识别潜在的延迟问题。

   示例:
   ```bash
   redis-cli --latency
   ```

3. **ASCII 艺术延迟频谱图**:在延迟检测的基础上,添加 `--latency-history` 选项,Redis CLI 会生成一个基于 ASCII 艺术的延迟样本频率分布图(spectrogram)。这种可视化方式有助于直观地观察延迟随时间的变化趋势和模式。

   示例:
   ```bash
   redis-cli --latency --latency-history
   ```

**其他高级功能**

1. **连接选项**:通过 `-h`(主机)、`-p`(端口)、`-a`(密码)等选项指定要连接的 Redis 服务器地址、端口和密码。

2. **批量执行**:使用 `-x` 选项可以一次性发送多条命令(通过换行分隔),适用于脚本或批处理场景。

3. **管道(pipelining)**:通过 `-n` 选项可以启用管道模式,批量发送命令并一次性接收所有响应,提高网络效率。

4. **格式化输出**:使用 `--raw`、`--csv`、`--pretty` 等选项控制命令输出的格式,便于与其他程序集成或进行进一步数据分析。

5. **Lua 脚本执行**:可以直接在 Redis CLI 中编写和执行 Lua 脚本,利用 Redis 的 Lua 脚本功能进行更复杂的数据操作。

总之,Redis CLI 是一个功能丰富、易用的工具,不仅能满足日常的 Redis 数据操作需求,还提供了诸多高级功能和特殊模式,助力开发者进行调试、性能分析和自动化任务执行。随着对 Redis CLI 的深入了解和熟练使用,您将能更高效地管理和操作 Redis 数据库。

docker exec -it my-redis-stack redis-cli INCR mycounter > /tmp/output.txt

注意,由于 redis-cli 检测到输出不再写入终端,因此输出中省略了 `(integer)`。即使在终端上,您也可以使用 `--raw` 选项强制获得原始输出:

```bash
$ redis-cli --raw INCR mycounter
9
```

当向文件写入或通过管道将输出传递给其他命令时,您可以使用 `--no-raw` 选项强制生成人类可读的输出。

其他命令参考: Redis CLI | Redis

The string 127.0.0.1:6379> is the prompt. It displays the connected Redis server instance's hostname and port.

当进行重新连接时,redis-cli 会自动重新选择上次所选的数据库编号。然而,关于连接的所有其他状态都会丢失,比如在 MULTI/EXEC 事务内部的状态:

Clients :Jedis guide | Redis

相关推荐

  1. Hive 安装部署

    2024-04-02 19:14:07       46 阅读
  2. 安装部署Docker-Compose

    2024-04-02 19:14:07       43 阅读
  3. ClickHouse安装部署

    2024-04-02 19:14:07       75 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-02 19:14:07       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-02 19:14:07       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-02 19:14:07       87 阅读
  4. Python语言-面向对象

    2024-04-02 19:14:07       96 阅读

热门阅读

  1. 打造专属wow服务器配置需求!

    2024-04-02 19:14:07       36 阅读
  2. 前端低代码平台的使用学习

    2024-04-02 19:14:07       30 阅读
  3. Qt实现Kermit协议(二)

    2024-04-02 19:14:07       38 阅读
  4. C++中重载和重写的区别

    2024-04-02 19:14:07       35 阅读
  5. 解密SFP和QSFP:你需要知道的一切

    2024-04-02 19:14:07       42 阅读
  6. Git使用

    2024-04-02 19:14:07       39 阅读
  7. 每日一题: 为什么要使用Spring?

    2024-04-02 19:14:07       38 阅读
  8. 【数据库】[MYSQL][面试题]常见数据库知识整理

    2024-04-02 19:14:07       34 阅读
  9. C++ map 常用部分

    2024-04-02 19:14:07       41 阅读
  10. 【zml】vp9 vp8

    2024-04-02 19:14:07       36 阅读
  11. 简单的HTML

    2024-04-02 19:14:07       32 阅读