参考: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_args
、your_redi_search_args
、your_redis_json_args
、your_redis_timeseries_args
和your_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