使用 Docker Compose 部署单机版 Redis:简单高效的数据缓存与存储

news2024/11/27 1:22:53

家人们啦!今天我们来介绍如何使用 docker-compose 部署单机版 Redis,这是一个简单高效的数据缓存与存储解决方案,广泛应用于Web应用、移动应用以及各类数据处理场景。我们过后几篇文章了将会介绍cluster和sentinel集群的部署。通过本文的指导,你将能够快速上手并体验 Redis 在你的应用中所带来的便捷性与高性能。废话不多说,让我们开始吧!

官方文档:https://redis.io/documentation

什么是 Redis?

Redis(Remote Dictionary Server的缩写)是一个开源的内存数据存储系统,它可以用作数据库、缓存和消息中间件。Redis 支持多种数据结构,包括字符串、列表、哈希、集合、有序集合等,这些数据结构使得 Redis 在处理数据时非常灵活高效。

Redis 的优点:

  • 高性能:Redis 将数据存储在内存中,因此读写速度非常快,适用于高并发读写的场景。
  • 持久化:Redis 支持数据持久化到硬盘,保证数据不会因为服务器重启而丢失。
  • 丰富的数据结构:Redis 支持多种数据结构,适用于各种不同的应用场景。
  • 分布式:虽然本文介绍的是单机版 Redis,但 Redis 本身支持分布式部署,能够满足大规模应用的需求。

使用 Docker Compose 部署 Redis

在开始之前,请确保你已经安装了 Docker 和 Docker Compose。如果还没有安装,你可以根据你的操作系统类型,参考 Docker 和 Docker Compose 的官方文档进行安装:https://docs.docker.com/get-docker/ 和 https://docs.docker.com/compose/install/

以下是使用 Docker Compose 部署 Redis 的简单步骤:

第一步:创建 Docker Compose 文件

在你喜欢的文本编辑器中创建一个名为 docker-compose.yml 的文件,并将以下内容复制粘贴进去:

version: '3.3'
services:
  redis:
    image: redis:latest
    container_name: redis
    restart: always
    ports:
      - '6379:6379'
    volumes:
      - ./data:/data
      - ./redis.conf:/usr/local/etc/redis/redis.conf
      - ./logs:/logs
    #配置文件启动
    command: redis-server /usr/local/etc/redis/redis.conf

这个 Docker Compose 文件定义了一个名为 redis 的服务,使用了 Redis 官方镜像,将容器的 6379 端口映射到主机的 6379 端口(Redis 默认端口)。

配置文件 redis.conf

# Redis 服务器的端口号(默认:6379)
port 6379

# 绑定的 IP 地址,如果设置为 127.0.0.1,则只能本地访问;若设置为 0.0.0.0,则监听所有接口(默认:127.0.0.1)
bind 0.0.0.0

# 设置密码,客户端连接时需要提供密码才能进行操作,如果不设置密码,可以注释掉此行(默认:无)
# requirepass foobared
requirepass xj2023

# 设置在客户端闲置一段时间后关闭连接,单位为秒(默认:0,表示禁用)
# timeout 0

# 是否以守护进程(daemon)模式运行,默认为 "no",设置为 "yes" 后 Redis 会在后台运行
daemonize no

# 设置日志级别(默认:notice)。可以是 debug、verbose、notice、warning
loglevel notice

# 设置日志文件的路径(默认:空字符串),如果不设置,日志会输出到标准输出
logfile ""

# 设置数据库数量(默认:16),Redis 使用数据库索引从 0 到 15
databases 16

# 是否启用 AOF 持久化,默认为 "no"。如果设置为 "yes",将在每个写操作执行时将其追加到文件中
appendonly no

# 设置 AOF 持久化的文件路径(默认:appendonly.aof)
# appendfilename "appendonly.aof"

# AOF 持久化模式,默认为 "always"。可以是 always、everysec 或 no
# always:每个写操作都立即同步到磁盘
# everysec:每秒钟同步一次到磁盘
# no:完全依赖操作系统的行为,可能会丢失数据,但性能最高
# appendfsync always

# 设置是否在后台进行 AOF 文件重写,默认为 "no"
# auto-aof-rewrite-on-rewrite no

# 设置 AOF 文件重写触发时,原 AOF 文件大小与新 AOF 文件大小之间的比率(默认:100)
# auto-aof-rewrite-percentage 100

# 设置是否开启 RDB 持久化,默认为 "yes"。如果设置为 "no",禁用 RDB 持久化功能
save 900 1
save 300 10
save 60 10000

# 设置 RDB 持久化文件的名称(默认:dump.rdb)
# dbfilename dump.rdb

# 设置 RDB 持久化文件的保存路径,默认保存在当前目录
# dir ./

# 设置是否开启对主从同步的支持,默认为 "no"
# slaveof <masterip> <masterport>

# 设置主从同步时是否进行数据完整性校验,默认为 "yes"
# repl-diskless-sync no

# 设置在复制时是否进行异步复制,默认为 "yes",可以加快复制速度,但会增加数据丢失的风险
# repl-backlog-size 1mb

# 设置是否开启集群模式(cluster mode),默认为 "no"
# cluster-enabled no

# 设置集群中的节点超时时间(默认:15000毫秒)
# cluster-node-timeout 15000

# 设置集群中节点间通信使用的端口号(默认:0)
# cluster-announce-port 0

# 设置集群中节点间通信使用的 IP 地址
# cluster-announce-ip 127.0.0.1

# 设置是否开启慢查询日志,默认为 "no"
# slowlog-log-slower-than 10000

# 设置慢查询日志的最大长度,默认为 128
# slowlog-max-len 128

# 设置每秒最大处理的写入命令数量,用于保护 Redis 服务器不被超负荷写入(默认:0,表示不限制)
# maxclients 10000

# 设置最大连接客户端数量(默认:10000,0 表示不限制)
# maxmemory <bytes>

# 设置最大使用内存的策略(默认:noeviction)。可以是 volatile-lru、allkeys-lru、volatile-random、allkeys-random、volatile-ttl 或 noeviction
# maxmemory-policy noeviction

# 设置允许最大使用内存的比例(默认:0),设置为 0 表示禁用
# maxmemory-samples 5

详细redis.conf文件大家可参考redis官方文档:
https://redis.io/docs/management/config-file/

_20230731231825.png

第二步:运行 Docker Compose

保存好 docker-compose.yml 文件后,打开终端或命令行,进入到存放该文件的目录,并执行以下命令:

docker-compose up -d

这个命令会启动 Redis 容器,并在后台运行。如果一切顺利,你应该会看到类似以下输出:

Attaching to redis
redis    | 1:C 31 Jul 2023 14:59:35.753 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
redis    | 1:C 31 Jul 2023 14:59:35.753 # Redis version=6.2.6, bits=64, commit=00000000, modified=0, pid=1, just started
redis    | 1:C 31 Jul 2023 14:59:35.756 # Configuration loaded
redis    | 1:M 31 Jul 2023 14:59:35.757 * monotonic clock: POSIX clock_gettime
redis    | 1:M 31 Jul 2023 14:59:35.758 * Running mode=standalone, port=6379.
redis    | 1:M 31 Jul 2023 14:59:35.758 # Server initialized

第三步:连接到 Redis

现在,Redis 已经在 Docker 容器中运行起来了。你可以使用任何支持 Redis 的客户端工具来连接到它,例如 redis-cli

如果你的ubuntu服务器上未安转redis-cli,可以直接在终端中输入以下命令安转:

sudo apt install redis-tools

安转成功之后连接到redis

redis-cli -h 192.168.10.108 -p 6379   -a 'xj2023'  --raw

如果一切顺利,你应该能够看到 Redis 客户端的命令行提示符,表示你已经成功连接到 Redis 服务器。

第四步:开始使用 Redis

恭喜你!现在你已经成功地使用 Docker Compose 部署了单机版 Redis。你可以使用 Redis 的各种命令来进行数据的读写、存储、删除等操作。比如:

  • 存储数据:

    set xj "修己!"
    
  • 获取数据:

    get xj
    
  • 删除数据:

    del xj
    

这只是 Redis 提供的众多功能中的一小部分,更多命令和用法你可以在 Redis 的官方文档中找到:https://redis.io/documentation

总结

在本文中,我们学习了如何使用 Docker Compose 快速部署单机版 Redis。Docker Compose 的优势在于能够简化多容器应用的管理,并且使得部署过程更加便捷。Redis 作为一个简单高效的数据缓存与存储解决方案,适用于各种不同规模的应用场景。

希望本文对你理解并使用 Redis 与 Docker Compose 有所帮助。如果你对 Redis 的更多高级特性感兴趣,比如持久化配置、集群模式等,建议你继续深入学习 Redis 的官方文档。谢谢阅读,祝你在使用 Redis 中取得成功!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用css和js给按钮添加微交互的几种方式

使用css和js给按钮添加微交互的几种方式 在现实世界中&#xff0c;当我们轻弹或按下某些东西时&#xff0c;它们会发出咔嗒声&#xff0c;例如电灯开关。有些东西会亮起或发出蜂鸣声&#xff0c;这些响应都是“微交互”&#xff0c;让我们知道我们何时成功完成了某件事。在本文…

切片[::-1]解析列表list表示的“非负整数加1”

列表数位表示非负整数&#xff0c;熟练操作“满十进位”。 (本笔记适合熟练操作Python列表list的 coder 翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免费“圣经”教程《 python 完全自学教程》&#xff0c;不仅仅…

一文搞定Java NIO,以及ZipInputStream、ByteArrayInputStream各种奇葩流

目录 一、Channel1、FileChannel代码示例2、DatagramChannel代码示例3、SocketChannel 和 ServerSocketChannel代码示例 二、Buffer1、ByteBuffer示例代码2、CharBuffer示例代码3、ShortBuffer、IntBuffer、LongBuffer、FloatBuffer、DoubleBuffer 等示例代码 三、Selector1、S…

MTK system_server 卡死导致手机重启案例分析

和你一起终身学习&#xff0c;这里是程序员Android 经典好文推荐&#xff0c;通过阅读本文&#xff0c;您将收获以下知识点: 一、MTK AEE Log分析工具二、AEE Log分析流程三、system_server 卡死案例分析及解决 本文主要针对 Exception Type: system_server_watchdog , system_…

激光雷达供不应求?产能过剩、毛利下滑、定点兑付风险凸显

激光雷达&#xff0c;已经供不应求&#xff1f; 以小鹏最新上市的G6车型为例&#xff0c;目前该车的Max版本在官网下订的交付时间为12周&#xff0c;原因之一就是激光雷达等核心零部件交付吃紧。 截图来自网络&#xff08;晚点Auto公众号&#xff09; 那么事实是否如此&#xf…

【Vue2.x源码系列05】异步更新及nextTick原理

vue 官网中是这样描述 nextTick 的 在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法&#xff0c;可以获取更新后的 DOM。 在学习 nextTick 是如何实现之前&#xff0c;我们要先了解下 JavaScript 的执行机制 JavaScript 执行机制 浏览器是多线程的&…

Kindling the Darkness: A Practical Low-light Image Enhancer论文阅读笔记

这是ACMMM2019的一篇有监督暗图增强的论文&#xff0c;KinD其网络结构如下图所示&#xff1a; 首先是一个分解网络分解出R和L分量&#xff0c;然后有Restoration-Net和Adjustment-Net分别去对R分量和L分量进一步处理&#xff0c;最终将处理好的R分量和L分量融合回去。这倒是很常…

简要介绍 | 航行家的视觉:理解Odometry, Relocalization和SLAM的区别与联系

注1&#xff1a;本文系“简要介绍”系列之一&#xff0c;仅从概念上对计算机视觉和机器人导航中的Odometry、Relocalization和SLAM进行非常简要的介绍&#xff0c;不适合用于深入和详细的了解。 航行家的视觉&#xff1a;理解Odometry, Relocalization和SLAM的区别与联系 Senso…

什么样台灯能保护眼睛?分享眼科医生推荐的台灯好物

很多时候&#xff0c;我们在挑选台灯时只关注了台灯的亮度是否足够&#xff0c;以为只要台灯够亮就不会伤眼睛。而实际上我们大多数视力的下降原因就与光有着非常大的关系&#xff0c;传统的白炽灯、荧光灯等等对我们这一辈造成的伤害就不多说了。如今条件好了&#xff0c;而LE…

高等数学教材啃书汇总难点(一)函数与极限

教材为理工科标配的同济大学第七版&#xff0c;本系列为一轮啃书&#xff0c;将必会的全部重难点悉数总结——尤其是各种晦涩的理论证明部分&#xff0c;考研数学一的选手&#xff0c;想冲击高分的话必须掌握。对于考研证明题部分&#xff0c;熟练掌握定义是必不可少的底层基础…

StoneDB亮相2023数据技术嘉年华:增强AP、升级TP、信创替换,让万千DBA用得更省心,企业用得更省钱

2023 年 4 月 8 日&#xff0c;第十二届『数据技术嘉年华』(DTC 2023) 在北京圆满举办。本届大会以“开源 融合 数智化 —— 引领数据技术发展&#xff0c;释放数据要素价值”为主题。大会汇聚众多优秀厂商、先进技术、卓越产品和优秀案例&#xff0c;来自数据领域的领军人物…

C语言指针进阶-2

本篇文章带 1. 数组传参和指针传参 2. 函数指针 3. 函数指针数组 的相关知识详细讲解&#xff01; 如果您觉得文章不错&#xff0c;期待你的一键三连哦&#xff0c;你的鼓励是我创作动力的源泉&#xff0c;让我们一起加油&#xff0c;一起奔跑&#xff0c;让我们顶峰相见&…

明明已经安装字体,但IDEA、CLION无法找到思源黑体/Source Hans Sans的问题解决

IDEA、CLION的Jetbrain系列软件不支持非TrueType的中文字体&#xff0c;而Adobe官方给出的字体却不是TrueType的&#xff0c;所以便会导致Jetbrain系软件无法找到已安装的中文字体&#xff0c;因此我们需要安装TrueType的字体 请在以下Github链接中下载&#xff1a; TrueType思…

HTTP——返回结果的HTTP状态码

HTTP 一、状态码告知从服务器端返回的请求结果二、2XX成功1、200 OK2、204 No Content3、206 Partial Content 三、3XX重定向1、301 Moved Permanently2、302 Found3、303 See Other4、304 Not Modified5、307 Temporary Redirect 四、4XX客户端错误1、400 Bad Request2、401 U…

c++11 标准模板(STL)(std::basic_ifstream)(三)

定义于头文件 <fstream> template< class CharT, class Traits std::char_traits<CharT> > class basic_ifstream : public std::basic_istream<CharT, Traits> 类模板 basic_ifstream 实现文件流上的高层输入操作。它将 std::basic_istrea…

大模型开发(十五):从0到1构建一个高度自动化的AI项目开发流程(上)

全文共5600余字&#xff0c;预计阅读时间约13~20分钟 | 满满干货(附全部代码)&#xff0c;建议收藏&#xff01; 本文目标&#xff1a;提出一种利用大语言模型(LLMs)加快项目的开发效率的解决思路&#xff0c;本文作为第一部分&#xff0c;主要集中在如何完整的执行引导Chat模…

无涯教程-jQuery - scrollTop( val )方法函数

scrollTop(val)方法用于将滚动顶部偏移量设置为所有匹配元素上的传递值。 scrollTop( val ) - 语法 selector.scrollTop( val ) 这是此方法使用的所有参数的描述- val - 代表所需滚动顶部偏移的正数。 scrollTop( val ) - 示例 以下是一个简单的示例&#xff0c;简单…

DLMS协议开发指引

1 进入DLMS模式 某些电表一开始未进入DLMS传送模式&#xff0c;需要进行切换。按照IEC62056-21协议模式E的规定&#xff0c;先发送以下内容&#xff1a; 典型的串口设置为&#xff1a;波特率300&#xff0c;校验位Even&#xff0c;数据位7。&#xff08;也可校验位无&#xff…

插入排序算法

插入排序 算法说明与代码实现&#xff1a; 以下是使用Go语言实现的插入排序算法示例代码&#xff1a; package mainimport "fmt"func insertionSort(arr []int) {n : len(arr)for i : 1; i < n; i {key : arr[i]j : i - 1for j > 0 && arr[j] > …

CentOS 7虚拟机 虚拟机安装安装增强VBox_GAs_6.1.22失败:modprobe vboxguest failed

我安装的CentOS 在安装增强工具的时候报错: 查阅资料后 &#xff0c;解决方法&#xff1a; 1、更新kernel内核版本&#xff1a; yum update kernel -y //安装kernel-devel和gcc编译工具链yum install -y kernel-devel gcc//更新kernel和kernel-devel到最新版本yum -y upgrade …