• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

    docker安装redis的完整步骤详解

    发布者: 琛瑞6678 | 发布时间: 2025-6-19 12:41| 查看数: 41| 评论数: 0|帖子模式

    在平常的开发工作中,我们经常会用到 redis,那么 docker 下应该如何安装 redis 呢?简单来说:第一步:拉取redis镜像;第二步:设置 redis.conf 配置文件;第三步:编写 docker-compose.yml文件,启动 redis;第四步:测试 redis。

    1:拉取 redis 镜像:docker  pull  redis:版本号

    根据自己的需求,拉取合适的redis版本,如果 docker pull redis 命令,后面不写版本号,那么默认拉取最新的 redis 镜像。拉取完成后,可以使用 docker images 命令查看拉取到的镜像,redis镜像如下:

    注意:如果拉取镜像失败,可能是 docker 配置文件的问题。在 /etc/docker/ 目录下,修改 daemon.json 文件中的配置的镜像加速器。镜像加速器网上搜索很多,尝试修改配置,修改完后一定要重启docker服务,不然不生效。重启 docker 命令:systemctl restart docker

    2:创建挂载目录,并设置 redis.conf 文件

    1)创建挂载目录
    1. mkdir  -p  /docker/redis/conf/
    2. mkdir  -p  /docker/redis/data/
    复制代码
    2)设置 redis.conf 配置文件
    在 /docker/redis/conf/ 目录下 新建 redis.conf 文件,设置文件内容如下:
    1. # redis 配置

    2. # 端口
    3. port 6379

    4. # tcp-backlog 表示 TCP 的监听队列长度。
    5. # 当 Redis 服务器监听客户端的连接请求时,操作系统会维护一个等待连接的队列,tcp-backlog 的值决定了这个队列的长度。
    6. # 在上述配置中,将该队列长度设置为 511,表示 Redis 服务器在监听客户端连接时,操作系统的 TCP 连接队列最多可容纳 511 个等待处理的连接请求。
    7. tcp-backlog 511

    8. # 当设置为 0 时,表示 Redis 服务器不会因为客户端处于空闲状态而自动断开连接。
    9. # 即只要客户端建立了与 Redis 服务器的连接,无论该客户端是否发送请求,服务器都不会主动关闭连接,即使该客户端长时间处于不活动状态。
    10. timeout 0

    11. # tcp-keepalive 表示 TCP 保活机制的时间间隔,单位是秒。
    12. # 当 Redis 服务器与客户端建立 TCP 连接后,会在连接处于空闲状态一段时间后发送保活探测包,以确保连接的有效性。
    13. # 在上述配置中,设置为 300 秒,表示 Redis 服务器会在客户端连接空闲 300 秒后,向客户端发送保活探测包。
    14. tcp-keepalive 300

    15. # 当设置为 no 时,表示 Redis 服务器不会以守护进程(daemon)的模式运行。
    16. # 守护进程是一种在后台运行的进程,通常不与用户进行交互,并且在后台持续运行,不占用终端会话。
    17. daemonize no

    18. # Note that on modern Linux systems "/run/redis.pid" is more conforming
    19. # and should be used instead.
    20. pidfile /var/run/redis_6379.pid

    21. # 控制 Redis 服务器的日志记录级别。
    22. loglevel notice

    23. # 该配置指定了 Redis 服务器将日志信息存储在 /data/redis.log 文件中。
    24. # 当 Redis 服务器运行时,会将产生的日志信息(如错误信息、操作信息等)按照 loglevel 所设定的级别写入到 /data/redis.log 文件中。
    25. logfile "/data/redis.log"


    26. # 主要用于设置 Redis 服务器内部可用的数据库数量。
    27. # Redis 支持多个数据库,这些数据库在内部以数字编号,从 0 开始。
    28. # 该配置项表示 Redis 服务器内部将创建 16 个不同的数据库,编号为 0 到 15。
    29. databases 16


    30. always-show-logo no

    31. # 主要用于控制 Redis 服务器在后台保存操作(BGSAVE)出现错误时的行为。
    32. # 当设置为 yes 时,如果 Redis 在执行后台保存操作(BGSAVE)出现错误,Redis 服务器将停止接受写操作(如 SET, HSET, LPUSH 等)。
    33. stop-writes-on-bgsave-error yes

    34. # 主要用于控制 Redis 的 RDB 文件的压缩功能。
    35. # 当设置为 yes 时,Redis 在生成 RDB 文件(Redis 数据库的快照文件,用于数据持久化)时,会对文件进行压缩。
    36. rdbcompression yes

    37. # 主要用于控制 Redis 在生成和加载 RDB 文件时是否包含校验和信息。
    38. # 当设置为 yes 时,Redis 在生成 RDB 文件(用于持久化存储 Redis 数据库状态的文件)时,会在文件末尾添加一个校验和。
    39. rdbchecksum yes

    40. # 主要用于指定 Redis 进行 RDB 持久化时生成的文件名称。
    41. # 当 Redis 进行 RDB 持久化操作(例如使用 SAVE 或 BGSAVE 命令)时,会将当前 Redis 数据库的状态存储在一个文件中。
    42. # 该配置项指定这个文件的名称为 dump.rdb。
    43. dbfilename dump.rdb

    44. # Redis 在某些同步操作时对 RDB 文件的处理方式。
    45. # 当设置为 no 时,Redis 在执行某些同步操作(如 RDB 文件的复制、同步等)时,不会主动删除同步过的 RDB 文件。
    46. rdb-del-sync-files no

    47. dir /data

    48. # 当该配置设置为 yes 时,表示副本服务器(replica)在某些情况下会继续为客户端提供陈旧的数据服务。
    49. # 具体来说,当副本服务器与主服务器的同步出现问题(如网络故障、主服务器宕机、复制链路中断等),导致副本服务器无法从主服务器更新最新的数据时,
    50. # 它不会拒绝客户端的读请求,而是继续使用它最后一次同步得到的数据为客户端提供服务。
    51. replica-serve-stale-data yes

    52. # 当设置为 yes 时,表示 Redis 副本服务器只能处理读操作,而不允许执行写操作。
    53. # 例如,用户试图在副本服务器上执行写操作,如 SET key value、HSET hash_key field value 等命令时,
    54. # Redis 副本服务器会拒绝执行这些命令并返回错误信息。
    55. replica-read-only yes

    56. # 该配置项位于 Redis 的配置文件中,用于控制 Redis 在主从复制时的同步方式
    57. # 当设置为 no(默认状态)时,Redis 主服务器在进行复制操作时,会先将数据存储在磁盘上的 RDB 文件中,然后将该文件传输给副本服务器
    58. # 在这种模式下,主服务器不会将 RDB 文件存储在磁盘上,而是直接通过网络将内存中的数据快照发送给副本服务器。
    59. # 这样可以减少磁盘 I/O,提高复制的速度,尤其适用于主服务器磁盘 I/O 是性能瓶颈的场景。
    60. repl-diskless-sync no

    61. # repl-diskless-sync 被设置为 yes 时,主服务器会采用无盘复制的方式将数据同步到副本服务器。
    62. # repl-diskless-sync-delay 则表示在开始无盘同步操作之前,主服务器会等待的时间(单位:秒)。在上述示例中,主服务器会等待 5 秒钟。
    63. repl-diskless-sync-delay 5

    64. # 主要用于控制 Redis 副本服务器在进行无盘复制时的加载方式。
    65. # 当设置为 disabled 时,表示 Redis 副本服务器在进行无盘复制(即从主服务器接收内存快照而非从磁盘加载 RDB 文件)时,使用默认的加载方式。
    66. repl-diskless-load disabled

    67. # 主要用于控制 Redis 主从复制过程中的 TCP 数据传输方式。
    68. # 当设置为 no 时,表示 Redis 在主从复制过程中,不会禁用 TCP_NODELAY 选项。
    69. repl-disable-tcp-nodelay no

    70. # 主要用于确定 Redis 副本服务器在主从复制架构中的优先级。
    71. # 该配置项的值表示 Redis 副本服务器的优先级
    72. replica-priority 100

    73. # 主要用于控制 Redis 的 ACL(访问控制列表)日志的最大长度。
    74. acllog-max-len 128

    75. # 设置密码
    76. requirepass your_password

    77. # 主要涉及 Redis 的键删除操作和复制操作的行为,用于控制 Redis 在执行某些关键操作时是否采用阻塞式或非阻塞式(懒删除)的处理方式。
    78. # 这些配置项都设置为 no 时,Redis 在执行相应操作(内存驱逐、删除过期键、执行会替换旧键的操作以及副本服务器全量同步时的数据库清空操作)时,
    79. # 会采用阻塞式的删除方式,可能会导致服务器在处理一些耗时较长的删除操作时出现性能下降,因为会暂停对其他命令的处理。
    80. # 而将这些配置项设置为 yes 则可以将这些操作改为非阻塞式(如使用 UNLINK 命令),使 Redis 可以在后台渐进式地处理删除操作,提高性能,
    81. # 但会增加后台资源的消耗,并且可能会在一定程度上影响数据一致性,需要根据具体的性能需求和数据一致性要求来合理配置。
    82. lazyfree-lazy-eviction no
    83. lazyfree-lazy-expire no
    84. lazyfree-lazy-server-del no
    85. replica-lazy-flush no

    86. # 主要用于控制 Redis 在执行用户删除操作时是否使用惰性删除。
    87. # 当设置为 no 时,表示 Redis 在执行用户发起的删除操作(例如 DEL 命令)时,会同步删除相关数据,即立即释放内存。
    88. lazyfree-lazy-user-del no

    89. # 该配置项用于调整 Redis 进程的 oom_score_adj 值,该值决定了在系统内存不足(OOM,Out of Memory)时,
    90. # Redis 进程被 Linux 系统的 OOM Killer 选中终止的可能性。
    91. oom-score-adj no

    92. # 主要与 Redis 进程在不同状态下的 oom_score_adj 值有关,该值影响 Linux 系统在内存不足(OOM,Out of Memory)时选择哪些进程终止以释放内存。
    93. # 第一个值(这里是 0)通常表示 Redis 进程在正常状态下的 oom_score_adj 值。
    94. # 第二个值(这里是 200)表示 Redis 进程在某种特定状态下(例如处于高负载、高内存使用或其他预定义的状态)的 oom_score_adj 值。
    95. # 第三个值(这里是 800)表示 Redis 进程在另一种更严重的状态下(例如处于严重内存压力或其他临界状态)的 oom_score_adj 值。
    96. oom-score-adj-values 0 200 800

    97. # disable-thp no

    98. # 主要用于开启 Redis 的 AOF(Append Only File)持久化模式。
    99. # 当设置为 yes 时,表示 Redis 会使用 AOF 持久化机制将写操作追加到文件末尾,以实现数据的持久化存储
    100. appendonly yes

    101. # The name of the append only file (default: "appendonly.aof")

    102. appendfilename "appendonly.aof"

    103. # appendfsync always
    104. appendfsync everysec
    105. # appendfsync no

    106. # 主要用于控制 Redis 在进行 AOF 文件重写时的同步行为
    107. # 当设置为 no 时,表示 Redis 在进行 AOF 文件重写(bgrewriteaof)时,会继续将新的写操作同步到 AOF 文件中
    108. no-appendfsync-on-rewrite no

    109. # 该配置项表示 AOF 文件大小的增长百分比。
    110. # 当 AOF 文件的大小相对于上一次重写后的大小增长了 100% 时,Redis 会触发 AOF 文件的自动重写操作。
    111. auto-aof-rewrite-percentage 100

    112. # 该配置项设定了 AOF 文件触发自动重写的最小文件大小。
    113. # 即使 auto-aof-rewrite-percentage 条件满足,但如果 AOF 文件的大小未达到 64mb,Redis 也不会触发自动重写操作。
    114. auto-aof-rewrite-min-size 64mb

    115. # 主要用于控制 Redis 在加载 AOF(Append Only File)文件时,遇到截断(truncated)情况的处理方式
    116. # 当设置为 yes 时,表示 Redis 在加载 AOF 文件时,如果发现文件被截断(可能是由于系统崩溃、磁盘故障等导致文件不完整),
    117. # 会尝试继续加载文件的剩余部分,并向用户发出日志信息和警告,而不是直接拒绝加载
    118. aof-load-truncated yes

    119. # 主要用于控制 Redis 的 AOF(Append Only File)文件的存储格式
    120. # 当设置为 yes 时,表示 Redis 的 AOF 文件将使用 RDB 前置格式
    121. aof-use-rdb-preamble yes

    122. # 主要用于控制 Redis 中 Lua 脚本的执行时间限制
    123. # 该配置项指定了 Redis 中 Lua 脚本的最大执行时间,单位为毫秒
    124. lua-time-limit 5000

    125. # cluster-enabled yes

    126. # cluster-config-file nodes-6379.conf

    127. # cluster-node-timeout 15000

    128. # 主要用于控制 Redis 服务器对慢查询的记录阈值
    129. # 当 Redis 执行一个命令的时间超过该阈值时,这个命令会被记录到慢日志(slow log)中
    130. slowlog-log-slower-than 10000

    131. # 主要用于控制 Redis 服务器的慢日志(Slow Log)的最大长度
    132. slowlog-max-len 128

    133. # 主要用于控制 Redis 的延迟监控功能的启用阈值
    134. #
    135. latency-monitor-threshold 0

    136. notify-keyspace-events ""

    137. # 该配置项指定了使用 ziplist 存储哈希表时,哈希表元素的最大条目数
    138. hash-max-ziplist-entries 512
    139. # 该配置项指定了使用 ziplist 存储哈希表时,哈希表元素的最大字节大小
    140. hash-max-ziplist-value 64

    141. # 该配置项用于指定 Redis 列表使用 ziplist 存储时的大小限制
    142. # 当设置为 -2 时,表示 Redis 会根据列表的长度来决定 ziplist 的大小限制
    143. list-max-ziplist-size -2

    144. # 该配置项指定了 Redis 列表的压缩深度
    145. list-compress-depth 0

    146. # 该配置项指定了 Redis 集合在使用整数集合(intset)存储结构时的最大元素数量
    147. set-max-intset-entries 512

    148. # 该配置项指定了 Redis 有序集合在使用 ziplist 存储结构时的最大元素数
    149. zset-max-ziplist-entries 128
    150. # 该配置项指定了 Redis 有序集合在使用 ziplist 存储结构时,元素的最大字节大小
    151. zset-max-ziplist-value 64

    152. hll-sparse-max-bytes 3000

    153. stream-node-max-bytes 4096
    154. stream-node-max-entries 100

    155. activerehashing yes

    156. # 控制 Redis 服务器为不同类型客户端分配的输出缓冲区的大小限制及相关处理策略
    157. client-output-buffer-limit normal 0 0 0
    158. client-output-buffer-limit replica 256mb 64mb 60
    159. client-output-buffer-limit pubsub 32mb 8mb 60


    160. hz 10

    161. dynamic-hz yes

    162. aof-rewrite-incremental-fsync yes

    163. rdb-save-incremental-fsync yes

    164. # Enabled active defragmentation
    165. # activedefrag no

    166. # Minimum amount of fragmentation waste to start active defrag
    167. # active-defrag-ignore-bytes 100mb

    168. # Minimum percentage of fragmentation to start active defrag
    169. # active-defrag-threshold-lower 10

    170. # Maximum percentage of fragmentation at which we use maximum effort
    171. # active-defrag-threshold-upper 100

    172. # Minimal effort for defrag in CPU percentage, to be used when the lower
    173. # threshold is reached
    174. # active-defrag-cycle-min 1

    175. # Maximal effort for defrag in CPU percentage, to be used when the upper
    176. # threshold is reached
    177. # active-defrag-cycle-max 25

    178. # Maximum number of set/hash/zset/list fields that will be processed from
    179. # the main dictionary scan
    180. # active-defrag-max-scan-fields 1000

    181. # Jemalloc background thread for purging will be enabled by default
    182. jemalloc-bg-thread yes

    183. # Ending
    复制代码
    3:启动 redis,docker compose up -d  redis

    新建docker-compose.yml 文件,设置内容如下:
    1. version: '3'
    2. services:
    3.   redis:
    4.     image: redis:6.2.6
    5.     container_name: redis6.2.6
    6.     ## 设置持久化,允许远程访问,密码等
    7.     command: redis-server --appendonly yes --bind 0.0.0.0 --requirepass your_password
    8.     ports:
    9.       - 6379:6379
    10.     volumes:
    11.       # - ./data/:/data
    12.       - /docker/redis/conf/redis.conf:/etc/redis/redis.conf
    13.       - /docker/redis/data:/data
    14.     environment:
    15.       - TZ=Asia/Shanghai
    16.     restart: always

    17.     # 获取宿主机 root 权限
    18.     privileged: true
    19.     # # 设置容器网络为本机网络
    20.     network_mode: "host"
    复制代码
    使用 docker compose up -d  redis 命令启动redis,启动完成后,可以使用 docker  ps 查看启动状态。如果启动失败,可以通过 docker  logs  容器id 或者  docker logs  容器名称 查看redis日志。启动完成后,查看如下:

    注意:如果修改了 redis.conf 配置文件,则需要先停止redis容器,再删除redis容器,然后重新启动redis,主要命令如下:
    a:停止 nginx 容器:docker  stop  nginx 容器id /  容器名称
    b:删除 nginx 容器:docker rm  容器id /  容器名称
    c:启动 nginx 容器:docker compose up -d  nginx

    4:测试 redis

    使用客户端连接工具,进行连接,测试如下:

    以上为 docker 下安装 redis 的基本步骤,一定要 注意 redis.conf 配置文件的挂载目录。
    到此这篇关于docker安装redis的文章就介绍到这了,更多相关docker安装redis内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    来源:https://www.jb51.net/database/336958him.htm
    免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    ×

    最新评论

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表