用 Docker 安装并启动 Redis:从入门到实战

用 Docker 安装并启动 Redis:从入门到实战

Redis 作为一款高性能的键值对数据库,在缓存、会话存储、消息队列等场景中被广泛应用。本文将详细介绍如何使用 Docker 快速安装和启动 Redis,包括基础配置、数据持久化以及容器管理等核心操作,适合初学者快速上手。

一、准备工作:安装 Docker 环境

在开始之前,请确保你的系统已经安装了 Docker。如果尚未安装,可以按照以下步骤操作:

1. 安装 Docker(以 CentOS 为例)

bash

# 更新系统包
sudo yum update -y# 安装Docker依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2# 添加Docker软件源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo# 安装Docker引擎
sudo yum install -y docker-ce docker-ce-cli containerd.io# 启动Docker服务并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker# 验证Docker是否安装成功
sudo docker --version

2. 非 root 用户配置(可选)

为了避免每次使用docker命令都需要sudo权限,可以将当前用户添加到docker用户组:

bash

sudo usermod -aG docker $USER
# 生效配置(需要重新登录)
newgrp docker

二、Docker 安装 Redis:两种常用方式

方式 1:快速启动默认配置的 Redis

如果只需要临时使用 Redis 进行测试,最简单的方式是直接运行官方镜像:

bash

docker run --name redis-test -p 6379:6379 -d redis

参数说明:

  • --name redis-test:给容器命名为redis-test
  • -p 6379:6379:将主机的 6379 端口映射到容器的 6379 端口
  • -d:后台运行容器
  • redis:使用最新版本的 Redis 官方镜像

方式 2:自定义配置启动 Redis(推荐生产环境)

对于实际生产环境,我们需要自定义 Redis 配置(如设置密码、持久化策略等),并确保数据持久化到主机。

步骤 1:创建配置文件和数据目录

bash

# 创建存放Redis配置和数据的目录
mkdir -p /usr/local/redis/{conf,data}# 创建并编辑Redis配置文件
vi /usr/local/redis/conf/redis.conf
步骤 2:编写 Redis 配置文件

redis.conf中添加以下基础配置(根据需求调整):

conf

# bind 192.168.1.100 10.0.0.1
# 表示注释(该行不生效)。
#bind 用于指定 Redis 监听的网络接口地址(即允许哪些 IP 的客户端连接)。
#这里注释掉表示:不限制特定 IP,Redis 默认监听服务器上所有可用的网络接口(所有 IP 均可连接,除非受保护模式限制)。# bind 127.0.0.1 ::1
#同样是注释,127.0.0.1 是 IPv4 本地回环地址(仅本机可连接),::1 是 IPv6 本地回环地址。
#注释掉表示:Redis 不仅允许本地连接,还允许远程 IP 连接(需配合保护模式配置)。#bind 127.0.0.1
注释掉的单行本地回环地址绑定。若生效,Redis 仅允许本机(127.0.0.1)连接,拒绝所有远程请求。protected-mode no
#保护模式开关:no 表示关闭保护模式:允许外部网络连接(即使未绑定特定 IP 且未设置密码也能连接,生产环境不建议关闭)。
#若开启(yes),则仅允许本地连接,或需同时满足 “绑定了特定 IP” 和 “设置了密码” 才能远程连接。port 6379
#指定 Redis 服务监听的端口号,默认是 6379(Redis 官方默认端口)。tcp-backlog 511
#TCP 连接的 “待处理队列长度”:当客户端发起连接请求(三次握手完成后),会先进入该队列等待 Redis 处理。
#511 是默认值,实际生效值受系统内核参数(如net.core.somaxconn)限制。requirepass 123456
#设置 Redis 客户端连接的密码:客户端需通过 AUTH 123456 命令验证后才能操作 Redis(这里密码为123456,生产环境建议使用复杂密码)。timeout 0
#客户端空闲超时时间(单位:秒):若客户端超过该时间未发送任何命令,Redis 会主动关闭连接。
#0 表示不超时(客户端可一直保持连接)。tcp-keepalive 300
#TCP 保活机制(单位:秒):Redis 每 300 秒向客户端发送一次 TCP 保活探针,检测客户端是否仍在线(避免无效连接长期占用资源)。daemonize no
#是否以守护进程(后台)模式运行:
#no 表示在前台运行(日志直接输出到终端,关闭终端则 Redis 进程终止)。
#yes 表示在后台运行(需配合pidfile记录进程 ID)。supervised no
#指定 Redis 是否由系统管理进程(如 systemd、upstart)监控:
#no 表示不依赖任何系统管理进程。
#若为systemd,则 Redis 会配合 systemd 的进程管理机制运行。pidfile /var/run/redis_6379.pid
#当daemonize yes(守护进程模式)时,Redis 会将自身进程 ID(PID)写入该文件,用于系统管理(如停止服务时通过 PID 定位进程)。loglevel notice
#日志级别:控制日志输出的详细程度,可选值(从低到高):
#debug(调试信息,最详细)、verbose(详细信息)、notice(通知 + 警告 + 错误)、warning(警告 + 错误)、error(仅错误)。
#这里notice表示记录重要通知、警告和错误信息。logfile ""
#日志文件路径:
#空字符串("")表示日志输出到标准输出(终端)。
#若为守护进程模式,建议指定文件路径(如/var/log/redis.log),避免日志丢失。databases 16
#设置 Redis 默认创建的数据库数量:客户端可通过 SELECT <dbid> 命令切换数据库(编号从 0 到 29,默认 16 个库)。always-show-logo yes
#Redis 启动时是否显示 Logo:yes 表示显示 Redis 的 ASCII 艺术 Logo,no 表示不显示。save 900 1
#RDB 持久化触发条件:900 秒(15 分钟)内有至少 1 个键被修改,则自动执行bgsave生成 RDB 快照。save 300 10
#RDB 触发条件:300 秒(5 分钟)内有至少 10 个键被修改,自动生成 RDB 快照。save 60 10000
#RDB 触发条件:60 秒(1 分钟)内有至少 10000 个键被修改,自动生成 RDB 快照。stop-writes-on-bgsave-error yes
#当 RDB 持久化(bgsave)失败时,是否停止 Redis 接收写入操作:
#yes 表示停止(防止数据丢失,强制人工处理错误)。
#no 表示继续接收写入(可能导致数据无法持久化,有风险)。rdbcompression yes
#是否对 RDB 文件进行压缩:
#yes 表示压缩(节省磁盘空间,但消耗 CPU)。
#no 表示不压缩(节省 CPU,但文件更大)。rdbchecksum yes
#是否在 RDB 文件末尾添加校验和:
#yes 表示添加(用于验证 RDB 文件完整性,增加少量 CPU 消耗)。
#no 表示不添加(节省 CPU,但无法检测文件损坏)。dbfilename dump.rdb
#RDB 持久化文件的名称(默认dump.rdb),存储路径由dir参数指定。dir ./
#RDB 和 AOF 文件的存储目录:./ 表示 Redis 启动时的当前工作目录(建议指定绝对路径,如/var/lib/redis)。replica-serve-stale-data yes
#从节点(replica)与主节点(master)断开连接时,是否继续响应客户端请求:
#yes 表示继续(返回旧数据,保证可用性)。
#no 表示仅响应INFO和SLAVEOF命令,拒绝其他请求(保证数据一致性)。replica-read-only yes
#从节点是否为只读模式:yes 表示从节点不能执行写入操作(仅主节点可写,保证主从数据一致)。repl-diskless-sync no
#是否启用 “无盘复制”(主节点向从节点同步数据时不写入磁盘):
#no 表示不启用(传统方式:主节点生成 RDB 文件写入磁盘,再发送给从节点)。
#yes 表示启用(主节点直接通过网络发送 RDB 数据给从节点,节省磁盘 IO,适合网络快的场景)。repl-disable-tcp-nodelay no
#是否禁用 TCP_NODELAY 选项(影响主从数据同步的延迟):
#no 表示不禁用(数据立即发送,延迟低但带宽消耗高)。
#yes 表示禁用(数据会合并成大包发送,带宽低但延迟高)。replica-priority 100
#从节点的优先级(用于主从切换时选举新主节点):
#值越小优先级越高(0 表示该从节点不能成为主节点)。lazyfree-lazy-eviction no
#内存满时驱逐键(根据 maxmemory-policy)是否使用 “惰性删除”(后台异步删除,不阻塞主线程):no 表示立即删除(可能阻塞)。lazyfree-lazy-expire no
#键过期时是否使用惰性删除:no 表示立即删除(可能阻塞)。lazyfree-lazy-server-del no
#执行DEL命令删除大量数据时是否使用惰性删除:no 表示立即删除(可能阻塞)。replica-lazy-flush no
#从节点同步主节点数据前,清空自身数据是否使用惰性删除:no 表示立即清空(可能阻塞)。appendonly yes
#是否启用 AOF(Append Only File)持久化:
#yes 表示启用(记录所有写命令到 AOF 文件,用于恢复数据,比 RDB 更完整)。
#no 表示禁用(仅使用 RDB 持久化)。appendfilename "appendonly.aof"
#AOF 文件的名称(默认appendonly.aof),存储路径由dir参数指定。no-appendfsync-on-rewrite no
#AOF 重写期间是否禁用appendfsync(控制 AOF 文件刷盘策略):
#no 表示不禁用(每写入命令都刷盘,保证数据安全,但影响性能)。
#yes 表示禁用(重写期间不刷盘,提升性能,但可能丢失这段时间的数据)。auto-aof-rewrite-percentage 100
#AOF 自动重写的触发条件之一:当 AOF 文件大小超过 “上次重写后大小” 的 100%(即翻倍)时,触发重写(重写是为了压缩 AOF 文件,去除冗余命令)。auto-aof-rewrite-min-size 64mb
#AOF 自动重写的触发条件之二:AOF 文件大小至少达到 64MB 时,才可能触发重写(避免小文件频繁重写)。aof-load-truncated yes
#当 AOF 文件末尾被截断(如 Redis 崩溃导致),加载时是否继续:
#yes 表示继续加载(忽略截断部分,记录警告)。
#no 表示拒绝加载(需手动修复 AOF 文件)。aof-use-rdb-preamble yes
#是否启用 “混合持久化”:yes 表示 AOF 文件开头包含 RDB 格式数据,后续是增量 AOF 命令(结合 RDB 加载快和 AOF 数据完整的优点)。lua-time-limit 5000
#Lua 脚本的最大执行时间(单位:毫秒):超过 5000 毫秒(5 秒)的脚本会被强制终止,避免阻塞 Redis。slowlog-max-len 128
#慢查询日志的最大条目数:记录执行时间超过slowlog-log-slower-than(默认 10 毫秒)的命令,超过 128 条时会删除最旧的条目。notify-keyspace-events ""
#键空间通知配置:空字符串表示禁用通知(不发送任何事件)。若需开启(如键过期通知),可设置为特定字符(如"Ex"表示键过期事件)。hash-max-ziplist-entries 512
#哈希类型使用 “压缩列表(ziplist)” 存储的条件:当哈希的字段数≤512 时,用 ziplist(节省空间);否则转为哈希表(hashtable)。hash-max-ziplist-value 64
#哈希类型使用 ziplist 的补充条件:每个字段和值的长度≤64 字节(否则转为哈希表)。list-max-ziplist-size -2
#列表类型使用 ziplist 存储的最大内存:-2 表示以字节为单位,值为 8KB(超过则转为双向链表 linkedlist)。list-compress-depth 0
#列表的压缩深度:0 表示不压缩任何节点;1 表示压缩表头和表尾各 1 个节点;2 表示各 2 个,以此类推(节省空间)。set-max-intset-entries 512
#集合类型使用 “整数集合(intset)” 存储的条件:元素全为整数且数量≤512 时,用 intset(节省空间);否则转为哈希表。zset-max-ziplist-entries 128
#有序集合使用 ziplist 存储的条件:元素数≤128 时,用 ziplist;否则转为跳表(skiplist)。zset-max-ziplist-value 64
#有序集合使用 ziplist 的补充条件:每个元素的成员(member)长度≤64 字节(否则转为跳表)。hll-sparse-max-bytes 3000
#HyperLogLog 类型(用于基数统计)的稀疏表示最大字节数:超过 3000 字节时转为稠密表示(平衡空间和性能)。stream-node-max-bytes 4096
#流(stream)类型中每个节点的最大字节数:超过 4096 字节时拆分节点(优化流的存储和查询)。stream-node-max-entries 100
#流类型中每个节点的最大条目数:超过 100 条时拆分节点。activerehashing yes
#是否启用主动重哈希:yes 表示 Redis 定期对哈希表进行重哈希(优化哈希表性能,避免查询效率下降)。hz 10
#Redis 内部定时任务的执行频率(单位:赫兹):10 表示每秒执行 10 次,影响过期键删除、客户端超时检测等(值越高,响应越及时,但 CPU 消耗越高)。dynamic-hz yes
#是否动态调整hz值:yes 表示 Redis 空闲时降低hz(节省 CPU),繁忙时提高hz(保证响应速度)。aof-rewrite-incremental-fsync yes
#AOF 重写时是否启用增量 fsync:yes 表示每写入 32MB 数据就刷盘一次(避免大量数据同时刷盘导致延迟)。rdb-save-incremental-fsync yes
#RDB 保存时是否启用增量 fsync:yes 表示每写入 32MB 数据就刷盘一次(优化 RDB 持久化的性能)。
步骤 3:启动 Redis 容器

bash

 docker run  -p 6379:6379 --name redis --restart=always \-v /usr/local/redis/conf/redis.conf:/etc/redis/redis.conf \-v /usr/local/redis/data:/data \-d redis redis-server /etc/redis/redis.conf \--appendonly yes --requirepass 123456

参数详解:

  • --restart=always:容器退出时自动重启
  • -v /usr/local/redis/conf/redis.conf:/etc/redis/redis.conf:挂载主机配置文件到容器
  • -v /urs/local/redis/data:/data:挂载数据目录,实现数据持久化
  • redis-server /etc/redis/redis.conf:指定使用挂载的配置文件启动 Redis
  • --appendonly yes --requirepass 123456:开启 AOF 持久化(--appendonly yes )、设置密码(--requirepass 123456 )

三、验证 Redis 容器是否正常运行

1. 查看容器状态

bash

# 查看容器运行状态
docker ps | grep redis# 查看容器详细日志
docker logs redis

如果看到类似Ready to accept connections的日志,说明 Redis 启动成功。

2. 连接 Redis 进行测试

bash

# 进入Redis容器
docker exec -it redis redis-cli# 输入密码(如果配置了密码)
127.0.0.1:6379> AUTH 123456# 测试设置和获取键值
127.0.0.1:6379> SET test "Hello Docker Redis"
OK
127.0.0.1:6379> GET test
"Hello Docker Redis"

四、Redis 容器管理常用命令

1. 基本操作

bash

# 启动已停止的Redis容器
docker start redis# 停止运行中的Redis容器
docker stop redis# 重启Redis容器
docker restart redis# 查看容器详细信息
docker inspect redis

2. 配置文件更新

当需要修改 Redis 配置时,只需更新主机上的/usr/local/redis/conf/redis.conf文件,然后重启容器即可:

bash

# 编辑配置文件
vi /usr/local/redis/conf/redis.conf# 重启容器使配置生效
docker restart redis

3. 升级 Redis 版本

bash

# 停止并删除当前容器(数据已持久化到主机,不会丢失)
docker stop redis
docker rm redis# 拉取新版本镜像
docker pull redis:latest# 使用相同命令启动新容器
docker run -d \--name redis \--restart=always \-p 6379:6379 \-v /usr/local/redis/conf/redis.conf:/etc/redis/redis.conf \-v /usr/local/redis/data:/data \redis:latest \redis-server /etc/redis/redis.conf

五、安全最佳实践

  1. 设置强密码:务必在配置文件中通过requirepass设置复杂密码
  2. 限制网络访问:生产环境建议通过bind参数限制允许连接的 IP,或通过防火墙控制访问
  3. 定期备份数据:虽然数据已持久化到主机,仍建议定期备份/usr/redis/data目录
  4. 使用固定版本镜像:生产环境避免使用latest标签,应指定具体版本(如redis:7.2.4
  5. 最小权限原则:运行容器时可考虑添加--user参数指定非 root 用户运行

六、常见问题解决

1. 容器启动后立即退出

检查日志定位问题:

bash

docker logs redis

常见原因:配置文件错误、目录权限不足(可尝试chmod 777 /opt/redis/data临时测试)

2. 无法远程连接 Redis

  • 检查主机防火墙是否开放 6379 端口
  • 确认 Redis 配置中protected-mode已设为no(或已正确配置bind参数)
  • 检查连接密码是否正确

3. 数据持久化失败

  • 确认挂载目录权限正确
  • 检查配置文件中dir参数是否指向/data
  • 查看 Redis 日志中是否有持久化相关错误

总结

通过 Docker 安装 Redis 可以极大简化部署过程,同时保证环境一致性。本文介绍的方法既适用于开发测试环境,也可通过适当调整配置应用于生产环境。核心在于理解数据持久化的实现方式和容器与主机的交互机制,以便更好地管理和维护 Redis 服务。

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

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

相关文章

ansible学习第一天

一&#xff1a;ansible基础知识1.1 ansible的定义与工作原理简述ansible是一个自动化运维工具&#xff0c;用于执行自动化任务&#xff0c;包括像配置管理&#xff0c;应用部署&#xff0c;任务执行等等&#xff0c;本质上来说也是基础设施及代码工具&#xff0c;通过可读性较强…

Vue原理与高级开发技巧详解

Vue 的底层原理、高级用法、性能优化和生态整合 文章目录Vue 的底层原理、高级用法、性能优化和生态整合一、Vue 双向绑定原理深度剖析1. Vue 2 实现原理&#xff08;Object.defineProperty&#xff09;2. Vue 3 实现原理&#xff08;Proxy&#xff09;3. v-model 高级用法二、…

axios的封装

axios的封装 在src目录下新建文件夹utils工具类&#xff0c;文件夹里面新建http.js文件&#xff0c;如果项目涉及到多个基地址可以新建http2.js文件。 import axios from axios;/*** 后端*/// 创建axios实例 const http axios.create({// 1.接口基地址baseURL: http://192.168…

MariaDB 数据库管理与web服务器

MariaDB 数据库管理与WEB 服务器 介绍 MariaDB 数据库介绍 **数据库&#xff0c;是一个存放计算机数据的仓库。**这个仓库是按照一定的数据结构来对数据进行组织和存储的&#xff0c;我们可以通过数据库提供的多种方法来管理其中的数据。 数据结构&#xff0c;是指数据的组织形…

分治-归并-912.排序数组-力扣(LeetCode)

一、题目解析1、将数组排升序2、在不使用任何内置函数的情况下解决问题二、算法原理分治-归并合并两个有序数组1、双指针遍历两个合并数组2、将比较后的较小值放到新开数组中3、防止有指针未遍历完&#xff0c;特殊处理4、将nums中的元素还原三、代码示例vector<int> tmp…

网络安全初学者学习心得

看到你对网络安全学习的兴趣&#xff0c;我感到非常振奋&#xff01;这个领域既充满挑战又回报丰厚&#xff0c;作为初学者&#xff0c;理清学习内容和方向确实至关重要。下面我将结合多年的行业观察和指导经验&#xff0c;为你详细拆解网络安全初学者的学习内容并分享一些核心…

防火墙笔记优化版

一、防火墙的核心定义防火墙是一种基于预设安全策略&#xff0c;用于隔离内网与外网、控制网络流量的安全系统&#xff08;可分为软件系统或硬件系统&#xff09;。其核心作用包括&#xff1a;流量隔离&#xff1a;物理或逻辑分隔内网、外网及 DMZ 区域&#xff08;DMZ 为内网与…

vue3前端项目cursor rule

cursor rule是什么&#xff0c;以及怎么定义&#xff0c;看这个文章&#xff1a; cursor中定义cursor rules_cursor rules如何编写-CSDN博客 针对现有一个vue3的前端项目&#xff0c;写了一份cursor rule&#xff0c;可以作为参考&#xff0c;内容如下&#xff08;仅作为参考&…

基于51单片机红外遥控定时开关智能家电插座设计

1. 功能介绍 本设计是一款基于 STC8C52 单片机 的智能家电插座系统&#xff0c;集 红外遥控控制、定时开关控制、自动与手动模式切换、掉电数据保存、液晶显示、蜂鸣器提示 于一体&#xff0c;能够方便用户对家用电器进行精准的定时控制与远程操作。系统广泛适用于家用电器、办…

下一代防火墙组网方案

知识回顾&#xff1a;1.传统防火墙包括包过滤防火墙、应用网关防火墙、状态检测防火墙。2.包过滤防火墙工作在3、4层。3.包过滤防火墙特点&#xff1a;4.应用网关防火墙主要作用&#xff1a;①截取用户初始化连接请求&#xff0c;对用户进行认证&#xff1b;②通过ALG能让多通道…

WEB开发-第二十七天(PHP篇)

DW PHPStorm PhpStudy Navicat Premium DW : HTML&JS&CSS开发 PHPStorm : 专业PHP开发IDE PhpStudy &#xff1a;Apache MYSQL环境 Navicat Premium: 全能数据库管理工 变量覆盖安全&#xff1a; $GLOBALS&#xff1a;这种全局变量用于在PHP脚本中的任意位置访…

Lwip深度阅读-网络架构

LWIP网络协议栈详细介绍 本文的内容基本基于野火的LWIP手册&#xff0c;和LWIP源码撰写。 网络协议栈概述 从图片可以看出&#xff0c;网络协议栈采用分层架构&#xff0c;每一层都有特定的功能和协议。 TCP/IP协议分层模型数据封装过程MAC数据包 我使用wireShark抓包的时候&am…

嵌入式系统学习Day16(C语言中的位运算)

位运算二进制位的运算嵌入式:通过位运算 控制 硬件运算: 运算规则 & 与 一假则假 | 或 一真则真 ~ 非 真假相对 ^ 异或 相同为假 不同为真 << 左移 表示二进制位的移动 >> 右移 eg:int a 0x55; int b 0x33;0101 0101 //0x55 &am…

Endnote下载,导入曼大 harvard_manchester格式

下载endnote 并激活中国农业科技文献与信息服务平台&#xff0c;点击下载 下载harvard_manchester 格式 Harvard Manchester - Referencing guide at the University of Manchester - Subject guides at University of Manchester 双击打开第二步下载的安装包&#xff08;使用…

【Docker进阶实战】从多容器编排到集群部署

Docker进阶实战&#xff1a;从多容器编排到集群部署 当你已经熟悉Docker的基本操作后&#xff0c;面对的下一个挑战往往是&#xff1a;如何管理多个容器的协作&#xff1f;如何实现容器的集群化部署与扩展&#xff1f;如何保证服务的高可用&#xff1f; 一、Docker Compose&…

【Linux文件操作】文件操作系统调用

目录 一、文件创建&#xff08;creat 系统调用&#xff09;​ 1.1 函数原型 1.2 参数说明​ 1.3 返回值​ 1.4 使用示例 二、文件打开&#xff08;open 系统调用&#xff09;​ 2.1 函数原型 2.2 参数说明​ 2.3 返回值​ 2.4 使用示例 三、文件读写&#xff08;read 和 write …

FreeRTOS源码分析六:vTaskDelay vs xTaskDelayUntil任务延时

系列文章目录 FreeRTOS源码分析一&#xff1a;task创建&#xff08;RISCV架构&#xff09; FreeRTOS源码分析二&#xff1a;task启动&#xff08;RISCV架构&#xff09; FreeRTOS源码分析三&#xff1a;列表数据结构 FreeRTOS源码分析四&#xff1a;时钟中断处理响应流程 Free…

Linux学习-应用软件编程(fread/fwrite,流定义相关接口)

freadsize_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream); 功能按块从文件读取数据&#xff0c;从文件中读 nmemb 个、每个 size 字节的元素&#xff0c;存入 ptr 指向的内存。参数- ptr &#xff1a;存储读取数据的内存首地址&#xff08;需提前分配足够…

IP分片(IP Fragmentation)

目录 一、核心概念:MTU与分片的必要性 二、IP分片的关键字段(IPv4头部) 三、分片与重组流程 1. 分片过程(发送端或中间路由器) 2. 重组过程(接收端) 四、IPv4与IPv6分片的差异 五、分片的潜在问题与风险 六、总结 一、传输效率降低,带宽开销增加 二、可靠性降低,数据丢…

高并发内存池 内存释放回收(6)

文章目录前言一、threadcache回收内存二、centralcache回收内存三、pagecache回收内存总结前言 Hello&#xff0c;我们继续乘胜追击   本篇难度较大&#xff0c;大家要好好学一下 一、threadcache回收内存 当某个线程申请的对象不用了&#xff0c;可以将其释放给 thread cac…