当前位置: 首页 > news >正文

【Docker】docker compose 安装 Redis Stack

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

前文

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

创建配置文件

为了方便管理,建议创建一个配置文件用于管理 Redis 配置信息。

回到 /usr/local/software/docker/redisStack 目录下,创建名为 redis-stack.conf 的配置文件,并键入如下内容(各参数是什么,下文会有解释):

# 以下是一些常用的配置,可根据个人需要注释
port 6379
daemonize no
requirepass gusy1234
appendonly yes
save 900 1
save 300 10
save 60 10000
maxmemory 256mb
maxmemory-policy allkeys-lru
bind 0.0.0.0
# protected-mode yes# 以下是加载Redis的模块,根据个人所需注释loadmodule /opt/redis-stack/lib/rediscompat.so
loadmodule /opt/redis-stack/lib/redisearch.so
loadmodule /opt/redis-stack/lib/redistimeseries.so
loadmodule /opt/redis-stack/lib/rejson.so
loadmodule /opt/redis-stack/lib/redisbloom.so
loadmodule /opt/redis-stack/lib/redisgears.so v8-plugin-path /opt/redis-stack/lib/libredisgears_v8_plugin.so

创建

创建 docker-compose.yml 文件

回到 /usr/local/software/docker/redisStack 目录下
# 返回 /redisStack 目录 
cd /usr/local/software/docker/redisStack
# 创建 docker-compose.yml 文件
vim docker-compose.yml

方式一:使用配置文件方式

docker-compose.yml 文件中复制以下内容(需要用到上述的 redis-stack.config 文件):

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:- /usr/local/software/docker/redisStack/redis-stack.conf:/etc/redis-stack.conf# 1.使用主机绝对路径挂载数据- /usr/local/software/docker/redisStack/data:/data# 2.如果使用 docker 卷挂载数据,需要定义 'volumes:'# - redis-data:/datacommand: [ "redis-server", "/etc/redis-stack.conf" ]restart: always
# 如果你使用 docker 卷挂载,请解开注释
# 你可以通过命令 'docker volume inspect redis-data' 查看卷的物理位置等信息
#volumes:
#  redis-data:

方式二:使用无配置文件方式

使用全命令方式,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:/datacommand: ["redis-server",# 以下是一些常用的配置,可根据个人需要注释"--requirepass", "gusy1234",  # 配置密码"--appendonly", "yes",            # 启用AOF"--save", "900", "1",             # RDB: 每900秒至少有1个更改则保存"--save", "300", "10",            # RDB: 每300秒至少有10个更改则保存"--save", "60", "10000",          # RDB: 每60秒至少有10000个更改则保存"--maxmemory", "256mb",           # 设置最大内存为256MB"--maxmemory-policy", "allkeys-lru",  # 内存淘汰策略#      "--bind", "0.0.0.0",               # 允许所有网络访问#      "--protected-mode", "yes",          # 启用保护模式# 以下是加载个人所需的模块"--loadmodule", "/opt/redis-stack/lib/rediscompat.so","--loadmodule", "/opt/redis-stack/lib/redisearch.so","--loadmodule", "/opt/redis-stack/lib/redistimeseries.so","--loadmodule", "/opt/redis-stack/lib/rejson.so","--loadmodule", "/opt/redis-stack/lib/redisbloom.so","--loadmodule", "/opt/redis-stack/lib/redisgears.so","v8-plugin-path", "/opt/redis-stack/lib/libredisgears_v8_plugin.so"]restart: 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' 查看卷的物理位置等信息。
command
  • --requirepass:设置 Redis 访问密码。
  • --maxmemory:设置 Redis 的最大内存限制(例如 512mb,1gb,支持的单位有:kb、mb、gb)。
  • --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)最短的键。适用于需要优先淘汰即将过期的键的场景。
  • --appendonly:启用 AOF(Append-Only File)持久化(yes 或 no)。
  • --save:配置 RDB 快照的保存策略(例如“900 1 300 10 60 10000”)。
  •  --bind:绑定 Redis 监听的 IP 地址(默认是 0.0.0.0,即所有接口)。
  • --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

Redis 其他语法

# Redis 中查看所有配置
CONFIG GET *

相关文章:

【Docker】docker compose 安装 Redis Stack

注&#xff1a;整理不易&#xff0c;请不要吝啬你的赞和收藏。 前文 Redis Stack 什么是&#xff1f; 简单来说&#xff0c;Redis Stack 是增强版的 Redis &#xff0c;它在传统的 Redis 数据库基础上增加了一些高级功能和模块&#xff0c;以支持更多的使用场景和需求。Redis…...

pytest 常用插件

pytest 提供了许多功能强大的插件来增强测试体验和执行能力。以下是一些常用的 pytest 插件介绍&#xff0c;并结合 pytest.main() 进行使用的示例。 1. pytest-xdist pytest-xdist 插件用于并行化测试的执行&#xff0c;可以将测试分配到多个 CPU 核心并行运行&#xff0c;从…...

浅谈云计算05 | 云存储等级及其接口工作原理

一、云存储设备 在当今数字化飞速发展的时代&#xff0c;数据已然成为个人、企业乃至整个社会的核心资产。从日常生活中的珍贵照片、视频&#xff0c;到企业运营里的关键业务文档、客户资料&#xff0c;数据量呈爆炸式增长。面对海量的数据&#xff0c;如何安全、高效且便捷地存…...

linux:文件的创建/删除/复制/移动/查看/查找/权限/类型/压缩/打包,文本处理sed,awk

关于文件的关键词 创建 touch 删除 rm 复制 cp 权限 chmod 移动 mv 查看内容 cat(全部); head(前10行); tail(末尾10行); more,less,grep 查找 find 压缩 gzip ; bzip 打包 tar 编辑 sed 文本处理 awk 创建文件 格式&#xff1a; touch 文件名 删除文件 复制文…...

CentOS 8 如何安装java与mysql

在CentOS 8上安装Java和MySQL的步骤如下&#xff1a; 1. 安装 Java 1.1 安装 OpenJDK&#xff08;推荐&#xff09; CentOS 8 默认的软件仓库提供了 OpenJDK 包&#xff0c;您可以直接使用 dnf 命令安装。 # 更新系统 sudo dnf update -y# 安装 OpenJDK 11&#xff08;Cent…...

Go语言之路————go基本语法、数据类型、变量、常量、输出

Go语言之路————go基本语法、数据类型、变量、常量 前言一、基本语法知识二、数据类型三、常量四、变量五、作用域六、输入输出 前言 我是一名多年Java开发人员&#xff0c;因为工作需要现在要学习go语言&#xff0c;Go语言之路是一个系列&#xff0c;记录着我从0开始接触G…...

音视频入门基础:MPEG2-PS专题(7)——通过FFprobe显示PS流每个packet的信息

音视频入门基础&#xff1a;MPEG2-PS专题系列文章&#xff1a; 音视频入门基础&#xff1a;MPEG2-PS专题&#xff08;1&#xff09;——MPEG2-PS官方文档下载 音视频入门基础&#xff1a;MPEG2-PS专题&#xff08;2&#xff09;——使用FFmpeg命令生成ps文件 音视频入门基础…...

Docker安装和卸载(centos)

Docker安装和卸载 一&#xff0c;已安装Docker&#xff0c;卸载Docker 1.方法一 sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine​ 如果出现以下提示就证明没卸载…...

YOLOv8从菜鸟到精通(二):YOLOv8数据标注以及模型训练

数据标注 前期准备 先打开Anaconda Navigator&#xff0c;点击Environment&#xff0c;再点击new(new是我下载anaconda的文件夹名称)&#xff0c;然后点击创建 点击绿色按钮&#xff0c;并点击Open Terminal 输入labelimg便可打开它,labelimg是图像标注工具&#xff0c;在上篇…...

Winforms开发基础之非主线程操作UI控件的误区

前言 想象一下&#xff0c;你正在开发一个桌面应用程序&#xff0c;用户点击按钮后需要执行一个耗时操作。为了避免界面卡顿&#xff0c;你决定使用后台线程来处理任务。然而&#xff0c;当你在后台线程中尝试更新UI控件时&#xff0c;程序突然崩溃了。这是为什么呢&#xff1…...

Flutter中Get.snackbar和Get.dialog关闭冲突问题记录

背景&#xff1a; 在使用GetX框架时&#xff0c;同时使用了Get.snackbar提示框和Get.dialog加载框&#xff0c;当这两个widget同时存在时&#xff0c;Get.dialog加载框调用Get.back()无法正常关闭。 冲突解释&#xff1a; 之所以会产生冲突&#xff0c;是因为Get.snackbar在关…...

springcloudalibaba集成fegin报错ClassNotFoundException解决方案

集成fegin遇到问题: java.lang.ClassNotFoundException: com.netflix.config.CachedDynamicIntProperty 解决方案: 在pom文件中添加依赖 <dependency><groupId>com.netflix.archaius</groupId><artifactId>archaius-core</artifactId><versi…...

【HTML+CSS+JS+VUE】web前端教程-31-css3新特性

圆角 div{width: 100px;height: 100px;background-color: saddlebrown;border-radius: 5px;}阴影 div{width: 200px;height: 100px;background-color: saddlebrown;margin: 0 auto;box-shadow: 10px 10px 20px rgba(0, 0, 0, 0.5);}...

力扣264. 丑数 II

给你一个整数 n &#xff0c;请你找出并返回第 n 个 丑数 。丑数 就是质因子只包含 2、3 和 5 的正整数。 //用一个数组来保存第1到第n个丑数 //一个丑数必须是乘以较小的丑数的 2、3 或 5来得到。 //使用三路合并方法&#xff1a;L2、L3 和 L5三个指针遍历2、3、5倍的丑数序列…...

计算机网络之---TCP连接管理

TCP连接管理 TCP&#xff08;传输控制协议&#xff09;是面向连接的协议&#xff0c;在数据传输之前需要建立连接&#xff0c;在数据传输完成后需要断开连接。TCP连接的建立和断开都遵循特定的规则&#xff0c;分别称为三次握手&#xff08;Three-Way Handshake&#xff09;和四…...

《CPython Internals》阅读笔记:p118-p150

《CPython Internals》学习第 8 天&#xff0c;p118-p150 总结&#xff0c;总计 33 页。 一、技术总结 补充一些本人整理的关于 Context-Free Grammar(CFG) 的知识。 1.symbol(符号) A mathematical symbol is a figure or a combination of figures that is used to repre…...

C/C++ 数据结构与算法【排序】 常见7大排序详细解析【日常学习,考研必备】带图+详细代码

常见7种排序算法 冒泡排序&#xff08;Bubble Sort&#xff09;选择排序&#xff08;Selection Sort&#xff09;插入排序&#xff08;Insertion Sort&#xff09;希尔排序&#xff08;Shell Sort&#xff09;归并排序&#xff08;Merge Sort&#xff09;快速排序&#xff08;…...

三只松鼠携手爱零食,社区零售新高峰拔地而起

合纵连横&#xff0c;这是当前零售行业发展的一个主旋律。从商超之王胖东来的全国调改&#xff0c;到社区零售正在进行的渠道变革&#xff0c;竞争的激烈和商业模式的升级令人目不暇接。 量贩零食赛道在过去一年就是如此&#xff0c;有杀伐&#xff0c;有并购&#xff0c;刀光…...

Java聊天小程序

拟设计一个基于 Java 技术的局域网在线聊天系统,实现客户端与服务器之间的实时通信。系统分为客户端和服务器端两类,客户端用于发送和接收消息,服务器端负责接收客户端请求并处理消息。客户端通过图形界面提供用户友好的操作界面,服务器端监听多个客户端的连接并管理消息通…...

Kibana操作ES基础

废话少说&#xff0c;开干&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;截图更清晰&#xff0c;复制在下面 #库操作#创建索引【相当于数据库的库】 PUT /first_index#获…...

给小米CyberGear电机找个‘家’:用3D打印限位器解决断电丢零位问题(附STL文件)

给小米CyberGear电机打造3D打印限位器&#xff1a;硬件方案解决断电丢零位难题 在机器人开发领域&#xff0c;小米CyberGear和灵足电机凭借其高性价比和出色性能&#xff0c;已成为众多创客和工程师的首选。然而&#xff0c;这类电机在实际应用中存在一个普遍痛点——断电后零…...

CANoe诊断实战:从Console到Fault Memory的故障排查全流程

1. 当车辆故障灯突然亮起时&#xff0c;工程师如何用CANoe快速定位问题 那天我正在测试车间调试一台新车型的ECU&#xff0c;仪表盘上那个刺眼的黄色故障灯突然亮了起来。作为从业多年的汽车电子工程师&#xff0c;我立刻意识到这可能是偶发性故障——最让人头疼的问题类型。不…...

Galaxy新手必看:5分钟搞定生物信息学工作流搭建(附Circos图实战)

Galaxy新手必看&#xff1a;5分钟搞定生物信息学工作流搭建&#xff08;附Circos图实战&#xff09; 第一次接触生物信息学分析时&#xff0c;面对命令行和复杂的数据格式&#xff0c;很多初学者都会感到无从下手。Galaxy平台的出现彻底改变了这一局面——这个开源的Web工具让生…...

用于计算系统状态的卡尔曼最优增益和最小均方误差(MMSE)估计研究附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f34a;个人信条&#xff1a;格物致知,完整Matlab代码及仿真咨询…...

WebDataset与低代码平台:简化深度学习数据处理流程

WebDataset与低代码平台&#xff1a;简化深度学习数据处理流程 【免费下载链接】webdataset A high-performance Python-based I/O system for large (and small) deep learning problems, with strong support for PyTorch. 项目地址: https://gitcode.com/gh_mirrors/we/we…...

ai结对编程,让快马帮你自动生成openclaw多轮对话任务规划应用骨架

最近在开发一个基于OpenClaw的多轮对话任务规划应用时&#xff0c;发现这类项目往往需要处理大量重复性代码框架搭建工作。比如要同时兼顾意图识别、状态管理、API调用和结果生成等多个模块&#xff0c;光是初始化项目结构就得花上大半天。好在尝试了InsCode(快马)平台的AI辅助…...

PE结构 --->8.PE对齐的概念 文件对齐VS磁盘对齐

目录 PE结构中对齐概念详解 原理 磁盘文件对齐&#xff08;File Alignment, 0x200&#xff09;&#xff1a; 内存对齐&#xff08;Section Alignment, 0x1000&#xff09;&#xff1a; 关系与CPU页管理&#xff1a; 详细步骤&#xff1a;PE文件加载到内存的对齐过程 读取…...

终端设备可靠性检测报告:读懂设备耐用密码

日常使用手机、智能手表、家用路由器等终端设备时&#xff0c;我们总希望它“扛造耐用”&#xff0c;不轻易出故障。这份终端设备可靠性检测报告&#xff0c;就用通俗的话拆解设备耐用的核心密码&#xff0c;让大家明白&#xff0c;一台靠谱的设备&#xff0c;背后都经过了哪些…...

已过期域名对SEO优化有什么影响

已过期域名对SEO优化有什么影响 在当今数字化时代&#xff0c;网站的搜索引擎优化&#xff08;SEO&#xff09;对于吸引流量和提升品牌知名度至关重要。域名作为网站的身份标志&#xff0c;其质量和历史往往对SEO有着深远影响。本文将探讨已过期域名对SEO优化有什么影响&#…...

终极指南:3个阶段让旧款Mac免费升级到最新macOS系统

终极指南&#xff1a;3个阶段让旧款Mac免费升级到最新macOS系统 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 你是否拥有一台2012-2017年的旧款Mac&#xf…...