用 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
英文地址,請注明出處:http://en.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…