【Docker】docker compose 安装 Redis Stack

embedded/2025/1/11 15:29:21/
aidu_pl">

注:整理不易,请不要吝啬你的赞和收藏。

前文

Redis Stack 什么是?

简单来说,Redis Stack 是增强版的 Redis ,它在传统的 Redis 数据库基础上增加了一些高级功能和模块,以支持更多的使用场景和需求。Redis Stack 包括以下几个主要组件:
  1. RedisJSON:用于在 Redis 中存储和操作 JSON 数据结构,支持复杂的 JSON 查询和更新操作。
  2. RediSearch:提供全文搜索和二次索引功能,使得在 Redis 中可以进行复杂的搜索查询。
  3. RedisGraph:一个图数据库模块,支持图数据结构的存储和查询,适用于社交网络、推荐系统等场景。
  4. RedisTimeSeries:专门用于时间序列数据的存储和分析,支持高效的时间序列数据写入和查询。
  5. RedisBloom:提供概率数据结构如布隆过滤器、HyperLogLog 等,用于高效地处理大规模数据集。
Redis Stack 通过这些模块的组合,使得开发者可以在一个统一的平台上处理多种类型的数据和查询需求,极大地扩展了 Redis 的应用场景。

镜像版本说明

官方提供了两种镜像版本,点击查看: redis-stack可用版本 和 redis-stack-server可用版本
  • redis/redis-stack:包含 Redis Stack server 和 Redis Insight。该容器最适合本地开发。
  • redis/redis-stack-server:仅提供 Redis Stack server 。该容器最适合生产部署。
两者区别在于有没有带有 RedisInsight web可视化界面,redis/redis-stack 带有 RedisInsight。
注:由于我不需要 web 版的 RedisInsight ,所以选择 redis/redis-stack-server 镜像。

准备

安装 docker-compose

已安装请跳过
# 检查是否安装 
docker-compose --version
# 通过 curl 安装
sudo curl -L "https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 设置权限
sudo chmod +x /usr/local/bin/docker-compose

创建挂载目录

# 宿主机上创建数据持久化目录
# 具体目录个人自定义,我为了方便管理 docker 挂载配置全部放在 /usr/local/software/docker 目录下
mkdir -p /usr/local/software/docker/redisStack/data

创建

创建 docker-compose.yml 文件

回到 /usr/local/software/docker/redisStack 目录下
# 返回 /redisStack 目录 
cd /usr/local/software/docker/redisStack
# 创建 docker-compose.yml 文件
vim docker-compose.yml
复制以下内容:
version: '3.8'
services:redis-stack-server:image: redis/redis-stack-server:latestcontainer_name: redis-stack-serverports:- "6379:6379"# 如果使用 redis-stack 镜像,请解开注释,8001端口为 Redis Insight WEB UI 默认端口# - "8001:8001"volumes:# 1.使用主机绝对路径挂载数据- /usr/local/software/docker/redisStack/data:/data# 2.如果使用 docker 卷挂载数据,需要定义 'volumes:'# - redis-data:/dataenvironment:- REDIS_PASSWORD=gusy1234# 以下为介绍用,可删除# 核心配置:# - REDIS_PORT=6379# - REDIS_PASSWORD=gusy1234# - REDIS_DATABASES=16# - REDIS_MAXMEMORY=512mb# - REDIS_MAXMEMORY_POLICY=allkeys-lru# 持久化配置:# - REDIS_APPENDONLY=yes# - REDIS_SAVE="900 1 300 10 60 10000"# 网络安全配置:# - REDIS_BIND=0.0.0.0# - REDIS_PROTECTED_MODE=yesrestart: always
# 如果你使用 docker 卷挂载,请解开注释
# 你可以通过命令 'docker volume inspect redis-data' 查看卷的物理位置等信息
#volumes:
#  redis-data:

配置说明

iamge:指定 Redis Stack server 的镜像版本
ports:
  • 6379:6379:将容器的 Redis 端口映射到主机的 6379 端口。
  • 8001:8001:将容器的 RedisInsight 端口映射到主机的 8001 端口(如果选择 Redis Stack 镜像可配置)。
volumes:
  • ../redisStack/data:/data:使用主机绝对路径挂载数据,语法:‘宿主机目录:容器目录’。
  • redis-data:/data:使用 docker 卷挂载数据,需要定义 'volumes:',你可以通过命令 'docker volume inspect redis-data' 查看卷的物理位置等信息。
environment:
  • REDIS_PORT:指定 Redis 服务的端口号(默认是 6379)。
  • REDIS_PASSWORD:设置 Redis 访问密码。
  • REDIS_DATABASES:设置 Redis 支持的数据库数量(默认是 16)。
  • REDIS_MAXMEMORY:设置 Redis 的最大内存限制(例如 512mb,1gb,支持的单位有:kb、mb、gb)。
  • REDIS_MAXMEMORY_POLICY:设置内存达到上限时的淘汰策略(例如 allkeys-lru,默认 noeviction)。
# 可选值:
1 noeviction(默认):当内存不足时,新写入操作会返回错误(如 (error) OOM command not allowed when used memory > 'maxmemory')。适用于不允许丢失任何数据的场景。
2 allkeys-lru:从所有键中淘汰最近最少使用的键。适用于需要缓存大量数据且可以接受淘汰部分数据的场景。
3 volatile-lru:仅从设置了过期时间的键中淘汰最近最少使用的键。适用于需要保留永久数据但可以淘汰缓存数据的场景。
4 allkeys-random:从所有键中随机淘汰键。适用于对淘汰策略没有特殊要求的场景。
5 volatile-random:仅从设置了过期时间的键中随机淘汰键。适用于需要保留永久数据但可以随机淘汰缓存数据的场景。
6 allkeys-lfu(4.0版本以上支持):从所有键中淘汰最不经常使用的键。适用于需要根据使用频率淘汰数据的场景。
7 volatile-lfu(4.0版本以上支持):仅从设置了过期时间的键中淘汰最不经常使用的键。适用于需要根据使用频率淘汰缓存数据的场景。
8 volatile-ttl:从设置了过期时间的键中淘汰剩余生存时间(TTL)最短的键。适用于需要优先淘汰即将过期的键的场景。
  • REDIS_APPENDONLY:启用 AOF(Append-Only File)持久化(yes 或 no)。
  • REDIS_SAVE:配置 RDB 快照的保存策略(例如“900 1 300 10 60 10000”)。
# “900 1 300 10 60 10000” 表示:
如果 900 秒(15 分钟)内发生至少 1 次写操作,则触发快照保存。
如果 300 秒(5 分钟)内发生至少 10 次写操作,则触发快照保存。
如果 60 秒(1 分钟)内发生至少 10,000 次写操作,则触发快照保存。
  • REDIS_BIND:绑定 Redis 监听的 IP 地址(默认是 0.0.0.0,即所有接口)。
  • REDIS_PROTECTED_MODE:启用保护模式(yes 或 no)。

验证配置

docker-compose -f docker-compose.yml config

启动

启动服务

# 启动服务
docker-compose up -d
执行结果
440d15df02574cfb91ef109ebac6fbbe.png

验证服务

1、查看服务是否状态
docker-compose ps
查看日志
docker-compose logs -f redis-stack-server
2、telnet 6379 端口验证
telnet 127.0.0.1 6379
3、使用工具验证 ( 我本地安装了 Redis Insight )
ce9200cdd97d4e189f112ce8f37fd161.png

进入容器

docker-compose exec redis-stack-server /bin/bash

拓展

docker-compose 其它语法

# 进入 docker-compose.yml 文件所在目录
# 停止服务
docker-compose down
# 进入容器
docker-compose exec <service_name> /bin/bash

 

 


http://www.ppmy.cn/embedded/153047.html

相关文章

如何进行单体前后端项目的微服务改造

如何进行单体前后端项目的微服务改造 引言 随着互联网技术的快速发展&#xff0c;传统的单体架构&#xff08;Monolithic Architecture&#xff09;逐渐显现出其局限性。对于大型应用来说&#xff0c;单体架构可能会导致开发效率低下、部署困难以及扩展性差等问题。因此&…

聊天机器人Rasa面试内容整理-如何进行实体抽取(Entity Extraction)?

在 Rasa 中,实体抽取(Entity Extraction) 是指从用户输入中识别出关键的信息(例如地点、时间、数字、产品名等)。Rasa 提供了多种方法来执行实体抽取,包括基于规则的方法、机器学习模型以及深度学习模型。不同的实体提取方法可以根据任务的需求进行选择和组合。 实体抽取…

Qt重写webrtc的demo peerconnection

整个demo为&#xff1a; 可以选择多个编码方式&#xff1a; cmake_minimum_required(VERSION 3.5)project(untitled LANGUAGES CXX) set(CMAKE_CXX_STANDARD 20) set(CMAKE_INCLUDE_CURRENT_DIR ON)set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON)set(CMA…

人工智能之基于阿里云快速搭建Llama-3.2-11B-Vision-Instruct

人工智能之基于阿里云快速搭建Llama-3.2-11B-Vision-Instruct 需求描述 基于阿里云搭建图片生成文字模型&#xff0c;模型名称&#xff1a;LLM-Research/Llama-3.2-11B-Vision-Instruct使用上述模型输入图片生成文字&#xff0c;模型路径 业务实现 阿里云配置 阿里云配置如…

for循环暴力解法以及优化练习

这里主要是练习一下用等差数列解决for循环的时间复杂度的一些问题 公式&#xff1a; 等差数列求和公式&#xff1a;&#xff08;首尾&#xff09;*项数/2 等差数列项数公式&#xff1a;&#xff08;尾-首&#xff09;/公差1 有一组数组比如&#xff1a;1&#xff0c…

通信网络安全分层及关键技术解决

要实现信息化&#xff0c;就必须重视信息网络安全。信息网络安全绝不仅是IT行业的问题&#xff0c;而是一个社会问题&#xff0c;是一个包括多学科的系统安全工程问题&#xff0c;并直接关系到国家安全。因此&#xff0c;知名安全专家沈昌祥院士呼吁&#xff0c;要像重视两弹一…

(超详细)Maven安装配置、以及在IDEA中创建Maven项目

一、登录官网下载Maven Download Apache Maven – Maven 根据自己所需要进行下载&#xff0c;如果是windows系统就下载zip文件&#xff0c;Linux系统就下载gz文件 我下载的版本是3.6.3&#xff0c;下面是网盘链接&#xff1a; 百度网盘链接: https://pan.baidu.com/s/1Ytoprb…

计算机网络之---端口与套接字

总括 端口&#xff1a;是计算机上用于标识网络服务的数字标识符&#xff0c;用于区分不同的服务或应用程序。套接字&#xff1a;是操作系统提供的用于进程间网络通信的编程接口&#xff0c;允许程序通过它来进行数据的发送、接收和连接管理。关系&#xff1a;端口号用于标识服…