【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

创建

创建 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:latest
    container_name: redis-stack-server
    ports:
      - "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:/data
    environment:
      - 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=yes
    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' 查看卷的物理位置等信息。
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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/951860.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

视频转码对画质有影响吗?视频融合平台EasyCVR支持哪些转码格式?

视频转码过程是将视频文件从一种编码格式转换为另一种格式的过程&#xff0c;这一过程在现代数字媒体中扮演着至关重要的角色。众所周知&#xff0c;视频转码不仅仅是简单的格式转换&#xff0c;它涉及多个关键参数的改变&#xff0c;例如视频编码格式、比特率、分辨率以及帧率…

vscode开启调试模式,结合Delve调试器调试golang项目详细步骤

1.前期准备 (1).在vs code中的扩展程序中搜索并安装Go扩展程序 (2).安装 Delve 调试器 go install github.com/go-delve/delve/cmd/dlvlatest (3).打开vs code的命令面板&#xff0c;输入Go: Install/Update Tools&#xff0c;并单击该命令执行&#xff0c;安装或更新Go语…

springboot和vue配置https请求

项目场景&#xff1a; 代码发布到线上使用https请求需要配置ssl证书&#xff0c;前后端都需要修改。 问题描述 如图&#xff0c;我们在调用接口时报如下错误&#xff0c;这就是未配置ssl但是用https请求产生的问题。 解决方案&#xff1a; 前端&#xff1a;在vite.config.js文…

每日学习30分轻松掌握CursorAI:Cursor基础设置与配置

Cursor基础设置与配置 一、基础设置概览 1. 设置项分类表 设置类别主要功能重要程度语言设置界面及AI交互语言配置★★★★★快捷键配置自定义操作快捷键★★★★☆外观设置主题、字体、颜色方案★★★☆☆编辑器设置缩进、换行、代码风格★★★★☆AI功能设置AI响应灵敏度、…

设计模式(观察者模式)

设计模式&#xff08;观察者模式&#xff09; 第三章 设计模式之观察者模式 观察者模式介绍 观察者模式&#xff08;Observer Design Pattern&#xff09; 也被称为发布订阅模式 。模式定义&#xff1a;在对象之间定义一个一对多的依赖&#xff0c;当一个对象状态改变的时候…

QT 下拉菜单设置参数 起始端口/结束端口/线程数量 端口扫描4

上篇文章QT实现 端口扫描暂停和继续功能 3-CSDN博客 双击 添加对话框类 界面设计 由于主体代码已经写完&#xff0c;只需要更改参数的获取即可 获取起始端口结束端口的输入 槽函数 给主界面类添加调用对话框类的功能 实现功能&#xff1a;点击菜单项可以弹出对话框窗体 增加槽…

Unity自定义编辑器:基于枚举类型动态显示属性

1.参考链接 2.应用 target并设置多选编辑 添加[CanEditMultipleObjects] using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor;[CustomEditor(typeof(LightsState))] [CanEditMultipleObjects] public class TestInspector :…

《代码随想录》Day31打卡!

《代码随想录》贪心算法&#xff1a;合并区间 本题的完整题目如下所示&#xff1a; 本题的完整思路如下所示&#xff1a; 1.本题依然是先对数组的左边界进行排序。将数组的第一个元素赋值给current。 2.遍历数组&#xff0c;判断current中的右边界和当前元素的左边界是否有重叠…

灵活运用事务回滚,快捷处理多张数据表格

各位编程宝子们&#xff08;尤其是对MySQL了解不多的宝子们&#xff09;在使用关系表处理时&#xff0c;有时候会希望简单一次性解决多张表的数据处理&#xff0c;但又有时候无从下手。其实有时候掌握数据的事务和回滚便可以简单解决这些事情&#xff0c;接下来我将以一个学生信…

Github提交Pull Request教程 Git基础扫盲(零基础易懂)

1 PR是什么&#xff1f; PR&#xff0c;全称Pull Request&#xff08;拉取请求&#xff09;&#xff0c;是一种非常重要的协作机制&#xff0c;它是 Git 和 GitHub 等代码托管平台中常见的功能&#xff0c;被广泛用于参与社区贡献&#xff0c;从而促进项目的发展。 PR的整个过…

kvm 解决 安装windows 虚拟机cpu 核数问题

通过lscpu命令查到我本机的cpu信息如下 CPU(s): 12 —— 系统的总逻辑处理单元数量&#xff08;包括所有核心和逻辑处理器&#xff09;。Thread(s) per core: 2 —— 每个物理核心支持 2 个线程&#xff08;表示启用了超线程技术&#xff09;。Core(s) per socket: 6 —— 每个…

面向对象分析与设计Python版 面向对象分析方法

文章目录 前言一、名词法二、名词法-案例三、CRC卡片法四、分析模型法&#xff08;了解&#xff09; 前言 面向对象分析的目标&#xff1a;发现对象、定义对象之间的关系和属性。常用的面向对象分析方法有三种&#xff1a; 名词法CRC卡片法分析模型法 一、名词法 大型复杂系…

python基础和redis

1. Map函数 2. filter函数 numbers generate_numbers() filtered_numbers filter(lambda x: x % 2 0, numbers) for _ in range(5):print(next(filtered_numbers)) # 输出: 0 2 4 6 83. filter map 和 reduce 4. picking and unpicking 5. python 没有函数的重载&#xff0…

Vue2:el-table中的文字根据内容改变颜色

想要实现的效果如图,【级别】和【P】列的颜色根据文字内容变化 1、正常创建表格 <template><el-table:data="tableData"style="width: 100%"><el-table-column prop="id" label="ID"/> <el-table-column …

git提交

基本流程&#xff1a;新建分支 → 分支上开发(写代码) → 提交 → 合并到主分支 拉取最新代码因为当前在 master 分支下&#xff0c;你必须拉取最新代码&#xff0c;保证当前代码与线上同步&#xff08;最新&#xff09;&#xff0c;执行以下命令&#xff1a;bashgit pull orig…

Airflow:TimeSensor感知时间条件

在数据管道工作流中&#xff0c;任务可能需要在特定的时间执行&#xff0c;或者在继续之前等待一定的时间。为了满足这些需求&#xff0c;Apache Airflow提供了TimeSensor&#xff0c;这是一种内置Sensor&#xff0c;可以监控当前时间&#xff0c;并在达到指定时间时触发后续任…

JS爬虫实战演练

在这个小红书私信通里面进行一个js的爬虫 文字发送 async function sendChatMessage(content) {const url https://pro.xiaohongshu.com/api/edith/ads/pro/chat/chatline/msg;const params new URLSearchParams({porch_user_id: 677e116404ee000000000001});const messageD…

Center Loss 和 ArcFace Loss 笔记

一、Center Loss 1. 定义 Center Loss 旨在最小化类内特征的离散程度&#xff0c;通过约束样本特征与其类别中心之间的距离&#xff0c;提高类内特征的聚合性。 2. 公式 对于样本 xi​ 和其类别yi​&#xff0c;Center Loss 的公式为&#xff1a; xi​: 当前样本的特征向量&…

【Maui】动态菜单实现(绑定数据视图)

前言 .NET 多平台应用 UI (.NET MAUI) 是一个跨平台框架&#xff0c;用于使用 C# 和 XAML 创建本机移动和桌面应用。 使用 .NET MAUI&#xff0c;可从单个共享代码库开发可在 Android、iOS、macOS 和 Windows 上运行的应用。 .NET MAUI 是一款开放源代码应用&#xff0c;是 X…

【json】

JSON JSON是一种轻量级的,按照指定的格式去组织和封装数据的数据交互格式。 本质上是一个带有特定格式的字符串(py打印json时认定为str类型) 在各个编程语言中流通的数据格式&#xff0c;负责不同编程语言中的数据传递和交互,类似于计算机普通话 python与json关系及相互转换…