Redis安裝,主從複製、哨兵模式、集群

来源:https://www.cnblogs.com/-xyl/archive/2023/05/22/17411373.html
-Advertisement-
Play Games

**本系列為:MySQL資料庫詳解,為千鋒資深教學老師獨家創作** **致力於為大家講解清晰MySQL資料庫相關知識點,含有豐富的代碼案例及講解。如果感覺對大家有幫助的話,可以【關註】持續追更\~** **文末有本文重點總結,技術類問題,也歡迎大家和我們溝通交流!** ![在這裡插入圖片描述](ht ...


淺淺的記錄下Redis安裝、主從、哨兵、集群。搭建筆記

一.Redis下載安裝

系統環境

  •  redis版本:7.0.11
  •  linux版本:CentOS Linux release 8.2.2004 (Core)
  • 官網下載地址:https://redis.io/download/

一些安裝命令,按照步驟執行

cd /usr/local  --redis相關文件將會安裝到此目錄下

mkdir redis7  --創建redis文件目錄

wget  wget https://download.redis.io/redis-stable.tar.gz  --下載最新穩定版本redis,這裡下載版本為7.0.11

tar -zxvf redis-stable.tar.gz --解壓下載好的redis壓縮包

cd redis-stable --進入到安裝包目錄里

make PREFIX=/usr/local/redis7/redis-stable install --使用make命令進行編譯操作

備註:這裡多了一個關鍵字 PREFIX= 這個關鍵字的作用是編譯的時候用於指定程式存放的路徑。比如我們現在就是指定了redis必須存放在/usr/local/redis7目錄。假設不添加該關鍵字Linux會將可執行文件存放在/usr/local/bin目錄,
庫文件會存放在/usr/local/lib目錄。配置文件會存放在/usr/local/etc目錄。其他的資源文件會存放在usr/local/share目錄。這裡指定號目錄也方便後續的卸載,後續直接rm -rf /usr/local/redis7 即可刪除redis。

設置環境變數

sudo cp /usr/local/redis7/redis-stable/bin/redis-cli /usr/local/bin

sudo cp /usr/local/redis7/redis-stable/bin/redis-server /usr/local/bin

sudo cp /usr/local/redis7/redis-stable/bin/redis-sentinel/usr/local/bin

至此下載安裝完畢,啟動redis

redis-server& /usr/local/redis7/redis-stable/redis.conf  --這裡加入& 符號,進行後臺啟動

二.redis.conf文件的一些基本配置

daemonize --表示啟用守護進程,預設是no,開啟時redis將以後臺服務的形式運行。

requirepass --認證密碼

port --監聽埠,預設為6379

database --設置資料庫的db數量

bind --綁定的主機,bind=127.0.0.1只能接受本機的訪問請求,不寫的情況下,無限制接受任何ip地址的訪問

protected-mode  --保護模式:可選項值yes或者no。該模式控制外部網是否可以連接redis服務,預設是yes,所以預設我們外網是無法訪問的,如需外網連接rendis服務則需要將此屬性改為no。

maxclient --設置同一時間最大客戶端連接數,預設無限制,Redis 可以同時打開的客戶端連接數為 Redis 進程可以打開的最大文件描述符數,如果設置 maxclients 0,表示不作限制。當客戶端連接數到達限制時,Redis 會關閉新的連接並向客戶端返回 max number of clients reached 錯誤信息。

dir --資料庫rdb文件存放路徑,預設為./ ,即和當前redis.config文件同一目錄下

dbfilename --指定資料庫文件名

刪除預設註釋行後的redis.config 文件

 使用命令 sed -i -e '/#/d;/^$/d' redis.conf

#綁定的主機,bind=127.0.0.1只能接受本機的訪問請求,不寫的情況下,無限制接受任何ip地址的訪問
bind *   

#保護模式:可選項值yes或者no。該模式控制外部網是否可以連接redis服務,預設是yes,所以預設我們外網是無法訪問的,如需外網連接rendis服務則需要將此屬性改為no。
protected-mode yes

#指定 Redis 監聽埠,預設埠為 6379
port 6379  

#設置tcp的backlog,backlog其實是一個連接隊列,backlog隊列總和=未完成三次握手隊列 + 已經完成三次握手隊列。預設為511
tcp-backlog 511

#一個空閑的客戶端維持多少秒關閉。0表示永不關閉
timeout 0

#對訪問客戶端的心跳檢測,每n秒檢測一次,預設為300
tcp-keepalive 300

#表示啟用守護進程,預設是no,開啟yes時redis將以後臺服務的形式運行。
daemonize yes

#當Redis以守護進程方式運行時,Redis預設會把pid寫入/var/run/redis.pid文件,可以通過pidfile指定
pidfile "/var/run/redis_6379.pid"

#日誌等級,Redis總共支持四個級別:debug、verbose、notice、warning,預設為notice
loglevel notice

#日誌名稱,指定日誌文件目錄,預設是logfile"",表示只在標準控制台輸出
logfile ""

#資料庫db數量數量,預設為16
databases 16

#是否顯示logo
always-show-logo no

#預設情況下,Redis 會修改進程標題(如“top”和“ps”所示)以提供一些運行時信息。 可以通過將以下設置為 no 來禁用它並使進程名稱保持為已執行狀態。
set-proc-title yes

#在更改進程標題時,Redis 使用以下模板來構造修改後的標題。
#模板變數在大括弧中指定。 支持以下變數:
#{title} 父進程執行的進程名稱,或子進程的類型。
#{listen-addr} 綁定地址或 ‘*’ 後跟 TCP 或 TLS 埠偵聽,或 Unix 套接字(如果可用)。
#{server-mode} 特殊模式,即“[sentinel]”或“[cluster]”。
#{port} TCP 埠監聽,或 0。
#{tls-port} TLS 埠監聽,或 0。
#{unixsocket} 監聽的 Unix 域套接字,或 “”。
#{config-file} 使用的配置文件的名稱。
proc-title-template "{title} {listen-addr} {server-mode}"
#持久化是出錯了,是否繼續工作
stop-writes-on-bgsave-error yes

#是否壓縮rdb文件
rdbcompression yes

#保存rdb文件時,是否進行錯誤的校驗
rdbchecksum yes

#存的rdb文件名稱
dbfilename "dump.rdb"

#Redis主從全量同步時,通過RDB文件傳輸實現。如果沒有開啟持久化,同步完成後,是否要移除主從同步的RDB文件,預設為no。
rdb-del-sync-files no
#存的rdb文件位置 dir "/usr/local/redis7/redis-stable" #當一個slave失去和master的連接,或者同步正在進行中,slave的行為有兩種可能: #1) 如果 replica-serve-stale-data 設置為 "yes" (預設值),slave會繼續響應客戶端請求,可能是正常數據,也可能是還沒獲得值的空數據 #2) 如果 replica-serve-stale-data 設置為 "no",slave會回覆"正在從master同步(SYNC with master in progress)"來處理各種請求,除了 INFO 和 SLAVEOF 命令 replica-serve-stale-data yes #你可以配置salve實例是否接受寫操作。可寫的slave實例可能對存儲臨時數據比較有用(因為寫入salve# 的數據在同master同步之後將很容被刪除),但是如果客戶端由於配置錯誤在寫入時也可能產生一些問題。 #從Redis2.6預設所有的slave為只讀 #註意:只讀的slave不是為了暴露給互聯網上不可信的客戶端而設計的。它只是一個防止實例誤用的保護層 #一個只讀的slave支持所有的管理命令比如config,debug等。為了限制你可以用'rename-command'來隱藏所有的管理和危險命令來增強只讀slave的安全性 replica-read-only yes #同步策略: 磁碟或socket,預設yes磁碟方式 repl-diskless-sync yes #如果非磁碟同步方式開啟,可以配置同步延遲時間,以等待master產生子進程通過socket傳輸RDB數據給slave #預設為5秒,如果配置為0,表示同步無延遲 repl-diskless-sync-delay 5 #非磁碟複製時,可以設置延遲 #當啟用無磁在達到最大延遲之前開始複製期望已連接的副本數。預設值為0表示等待最大延遲 repl-diskless-sync-max-replicas 0 #不使用無磁碟載入 repl-diskless-load disabled #在slave和master同步後(發送psync/sync),後續的同步是否設置成TCP_NODELAY #假如設置成yes,則redis會合併小的TCP包從而節省帶寬,但會增加同步延遲(40ms),造成master與slave數據不一致 #假如設置成no,則redis master會立即發送同步數據,沒有延遲 repl-disable-tcp-nodelay no #主從複製下,優先順序,哨兵模式:主機宕機,從機優先順序數低的優先順序低的,更適合升級為主機,預設為100 replica-priority 100 #acl日誌,用於記錄失敗或者阻塞的命令,定義acl最大表項長度 acllog-max-len 128 #採用UNLINK命令,刪除key時,提供非同步延時釋放,key記憶體的功能 lazyfree-lazy-eviction no #針對設置有TTL的鍵,達到過期後,被redis清理刪除時是否採用lazy free機制 lazyfree-lazy-expire no #針對有些指令在處理已存在的鍵時,會帶有一個隱式的DEL鍵的操作。如rename命令,當目標鍵已存在,redis會先刪除目標鍵,如果這些目標鍵是一個big key,那就會引入阻塞刪除的性能問題。 此參數設置就是解決這類問題,建議可開啟。 lazyfree-lazy-server-del no #針對slave進行全量數據同步,slave在載入master的RDB文件前,會運行flushall來清理自己的數據場景, #參數設置決定是否採用異常flush機制。如果記憶體變動不大,建議可開啟。可減少全量同步耗時,從而減少主庫因輸出緩衝區爆漲引起的記憶體使用增長。 replica-lazy-flush no #修改用戶的del行為操作,像unlink命令一樣 lazyfree-lazy-user-del no #FLUSHDB, FLUSHALL, SCRIPT FLUSH和FUNCTION FLUSH支持非同步和同步,刪除時,delete 將[SYNC|ASYNC]標誌傳遞到相應命令,如果命令都未通過,開啟此命令,用於非同步刪除 lazyfree-lazy-user-flush no #oom-score-adj參數指定Linux內核在記憶體不足時OOM殺死哪些進程,可選值有:yes、no,absolute。 預設值為 no 不更改oom-score-adj的值。 #yes 值是由伺服器啟動時oom-score-agj的初始值定義的,取值範圍為-1000到1000,通常是0。 #absolute 值將oom-score-adj-values參數值寫入到linux內核中,也就是按oom-score-adj-values參數值設定 oom-score-adj no #三個數值分別代表主進程、副本進程、子進程,數值越高代表被殺死的優先順序更高 oom-score-adj-values 0 200 800 #disable-thp參數指定是否禁用透明大頁,預設值為yes,表示禁用透明大頁。 #通常透明大頁預設會被設置為“madvise”或“never”,在這種情況下該參數不會起任何作用。只有當透明大頁設置為“always”時,redis預設會禁用透明大頁,以避免透明大頁帶來的延遲問題。 disable-thp yes #是否開啟aof持久化,如果開啟,在redis啟動時,將載入aof文件 appendonly no #aof持久化後,存儲的文件名稱 appendfilename "appendonly.aof" #aof持久化後,存儲的文件路徑 appenddirname "appendonlydir" #appendfsync參數指定將數據寫入(fsync)到磁碟的方式,取值有以下三種: #no 不同步,讓操作系統在需要時才刷新數據,非常快。 #always 每次寫入AOF日誌後同步,緩慢但是安全。 #everysec 每秒同步一次。 appendfsync everysec #no-appendfsync-on-rewrite參數指定是否在BGSAVE或BGREWRITEAOF階段時調用fsync,預設值為“no”。 #在appendfsync參數設定成“always”或“everysec”,並且後臺保存進程(後臺保存進程和AOF日誌重寫)正在對磁碟執行大量I/O時,redis可能會阻塞很長時間的fsync。 #目前redis是沒有解決此問題的方法的。因此,在遇到延遲問題時,可以將該值設置為“yes”,但這就意味著在最壞的情況下可能會丟失超過30秒的日誌。 no-appendfsync-on-rewrite no #auto-aof-rewrite-percentage參數指定自動重寫AOF文件觸發的百分比,指定百分比為0,則表示禁用自動重寫AOF文件。 #redis能夠在AOF日誌文件增加到指定的百分比時,自動重寫調用BGREWRITEAOF的日誌文件。它的工作原理是這樣:redis會記錄最後一次重寫後AOF文件的大小(如果重啟後沒有發生重寫,則使用啟用時AOF的大小), #此大小與當前的大小比較,如果當前大小大於指定的百分比的話,則觸發重寫。 auto-aof-rewrite-percentage 100 #參數指定觸發重寫AOF文件的最小大小 auto-aof-rewrite-min-size 64mb #aof-load-truncated參數指定redis啟動遇到AOF文件被截斷時是否繼續載入。取值可能為: #yes reids啟動時載入截斷的AOF文件,並會列印日誌通知用戶該事件。 #no redis啟動時因錯誤拒絕啟動,此時就需要用戶手動使用“redis-check-aof”修複AOF文件。 aof-load-truncated yes #參數指定在重寫AOF文件時,是否使用RDB前導碼,以便更快的進行重寫和恢復。啟用後,重寫的AOF文件由兩個不同的部分組成:[RDB 文件] [AOF 尾部]。在載入時,redis會先識別AOF文件以“redis”字元串開頭並載入首碼RDB文件,然後繼續載入AOF尾部。 aof-use-rdb-preamble yes #是否在aof日誌中記錄時間戳 aof-timestamp-enabled no #參數指定命令執行多久會記錄到慢日誌中,以微秒為單位。設置為負數表示禁用慢日誌記錄,設置為0會強制記錄所有命令 slowlog-log-slower-than 10000 #參數指定慢日誌的最大長度,需要註意的是,它會消耗記憶體 slowlog-max-len 128 #參數指定是否開啟延遲監控子系統,預設情況下是禁用的 #通常情況下不需要開啟,只有遇到有延遲問題時,才建議開啟,開啟後會對性能有較小的影響 latency-monitor-threshold 0 notify-keyspace-events "" #指定哈希以記憶體高效的數據結構編碼的最大數量,超過該值就不會再以高效的數據結構進行編碼。 hash-max-listpack-entries 512 #指定以哈希以記憶體高效的數據結構編碼的最大哈希大小,超過該值就不會再以高效的數據結構進行編碼。 hash-max-listpack-value 64 #指定列表以一種特殊的方式編碼,以節省大量空間。該參數可選以下值: #-5 最大大小:64Kb,不推薦用於正常工作負載中 #-4 最大大小:32Kb,不推薦 #-3 最大大小:16Kb,可能不推薦 #-2 最大大小:8Kb,好 #-1 最大大小:4Kb,好 list-max-listpack-size -2 #參數指定列表壓縮的深度,該參數可選以下值: #0 禁用列表壓縮 #1 列表不壓縮頭和尾,壓縮中間部分。例如有這樣一個列表:[head] -> node -> node -> … -> node -> [tail],不會壓縮列表的head和tail,只會壓縮中間node部分。 #2 列表不壓縮頭、下一個、尾和尾的上一個。例如有這樣一個列表:[head] -> [next] -> node -> node -> … ->[prev] -> [tail],不會壓縮head、next、prev和tail,只會壓縮中間node部分。 #3 列表不壓縮頭和尾開始的三個值,例如這樣的列表:[head] -> [next] -> [next] -> node -> node -> … ->[prev] -> [prev] -> [tail] #3 列表不壓縮頭和尾開始的三個值,例如這樣的列表:[head] -> [next] -> [next] -> node -> node -> … ->[prev] -> [prev] -> [tail] list-compress-depth 0 set-max-intset-entries 512 zset-max-listpack-entries 128 zset-max-listpack-value 64 hll-sparse-max-bytes 3000 stream-node-max-bytes 4kb stream-node-max-entries 100 activerehashing yes client-output-buffer-limit normal 0 0 0 client-output-buffer-limit replica 256mb 64mb 60 client-output-buffer-limit pubsub 32mb 8mb 60 hz 10 dynamic-hz yes aof-rewrite-incremental-fsync yes rdb-save-incremental-fsync yes jemalloc-bg-thread yes #認證密碼 requirepass "lin789."

三.主從複製

複製redis.conf,分別取名slave_1.conf、slave_2.conf

cp /usr/local/redis7/redis-stable/redis.conf  /usr/local/redis7/redis-stable/slave_1.conf 

cp /usr/local/redis7/redis-stable/redis.conf /usr/local/redis7/redis-stable/slave_2.conf 

修改slave_1.conf文件,除涉及埠外屬性,其他保持一致。最後一步需要加上同步的主機的ip和埠

#監聽埠
port 6378
#redis認證密碼 requirepass "lin789."
#主機認證密碼 masterauth "lin789."
#工作目錄 dir "/usr/local/redis7/redis-stable"
#rdb文件名稱 dbfilename "slave_1.rdb"
#pidfile文件名稱 pidfile "/var/run/redis_6378.pid"

#需要同步的主機ip、埠
replicaof <主機ip> <埠>

修改slave_2.conf文件,操作步驟同上

分別以配置文件redis.conf、slave_1.conf、slave_2.conf 啟動redis服務

cd /usr/local/redis7/redis-stable

redis-server redis.conf

redis-server slave_1.conf

redis-server slave_2.conf

進入到埠為6379的redis服務里

使用命令 redis-cli -p 6379 -a lin789.

使用命令查看集群狀態 info replicaion

四、哨兵模式

備註:這裡哨兵服務只啟用了一個,所以選舉是1

進入到目錄下

cd /usr/local/redis7/redis-stable

編輯sentinel.conf文件

vim sentienl.conf

如下:

protected-mode no
port 26379
daemonize yes
pidfile "/var/run/redis-sentinel.pid"
logfile "/usr/local/redis7/redis-stable/sentinel.log"

# 主節點的ip
sentinel announce-ip "127.0.0.1"

# 哨兵的埠
sentinel announce-port 23679

# 哨兵的工作目錄
dir "/usr/local/redis7/redis-stable"

# 哨兵監聽的master資料庫,1表示選舉數,這裡master ip 為主機外網ip地址
sentinel monitor mymaster <master ip> 6379 1

# 配置master的登錄密碼
sentinel auth-pass mymaster lin789.

# 10s內無響應,則認為master掛掉
sentinel down-after-milliseconds mymaster 10000
acllog-max-len 128

#保持預設配置
sentinel deny-scripts-reconfig yes
sentinel resolve-hostnames no
sentinel announce-hostnames no

編輯完畢後保存退出,使用命令 :wq

使用命令開啟哨兵模式 

redis-sentinel sentinel.conf

截止目前開啟 redis 開啟的相關服務

ps -aux|grep redis

根據配置文件的埠號,進入哨兵服務

redis-cli -p 26379   --登錄哨兵

sentinel master mymaster  --哨兵監聽的master信息

sentinel replicas mymaster  --查看master下的slave 信息

五、集群模式

cd /usr/local/redis7 --進入到redis7目錄

mkdir cluster --新建cluster文件夾

cd cluster --進入到cluster 文件下,創建如下6個文件夾,用於存放redis集群配置文件

回到redis7目錄下,創建redis.sh命令文件,用於複製redis.conf、redis-cli 、redis-server 文件到剛纔創建目錄中。內容如下:

for i in {1..6}
do
cp /usr/local/redis7/redis-stable/redis.conf /usr/local/redis7/cluster/redis600$i
cp /usr/local/redis7/redis-stable/bin/redis-cli  /usr/local/redis7/redis-stable/bin/redis-server /usr/local/redis7/cluster/redis600$i
done

修改/usr/local/redis7/cluster/redis6001目錄下 redis.conf 文件,如下

#註釋掉bind項或不修改預設監聽所有網卡
bind 10.0.8.12

#修改,關閉保護模式
protected-mode no

#監聽埠
port 6001


#開啟守護進程,以獨立進程啟動
daemonize yes


#開啟集群模式
cluster-enabled yes

#取消註釋,群集名稱文件設置
cluster-config-file nodes-6001.conf

#群集超時時間設置
cluster-node-timeout 15000

#資料庫名稱
dbfilename "dump6001.rdb"

#工作目錄
dir "/usr/local/redis7/cluster/redis6001"

#訪問密碼
requirepass lin789.

#訪問的主機密碼
masterauth lin789.

#聲明的外網ip,這裡註意是外網地址,否則連接集群時拒絕
cluster-announce-ip 外網ip地址

依次修改6002~6006文件夾下的redis.conf文件配置。(除埠屬性外,其他屬性配置相同)

回到redis7目錄下,創建redis.start命令文件,用於啟動 6001~6006 埠的6個redis服務。內容如下:

for d in {1..6}
do
cd /usr/local/redis7/cluster/redis600$d
redis-server redis.conf
done

回到redis7目錄下, 使用shell命令,啟動redis集群

sh -x redis_start.sh

啟動後服務如下:

使用命令創建集群

redis-cli --cluster create --cluster-replicas 1  127.0.0.1:6001 127.0.0.1:6002 127.0.0.1:6003 127.0.0.1:6004 127.0.0.1:6005 127.0.0.1:6006  -a lin789. 

備註:這裡127.0.0.1 實際部署時需要換成外網ip,cluster-replicas 1表示主機器最少需要1從,這裡6個redis服務,3主3從

firewall-cmd --add-port=6001/tcp --add-port=6002/tcp  --add-port=6003/tcp --add-port=6004/tcp  --add-port=6005/tcp  --add-port=6006/tcp  --開啟防火牆埠

firewall-cmd --add-port=16001/tcp --add-port=16002/tcp  --add-port=16003/tcp --add-port=16004/tcp  --add-port=16005/tcp  --add-port=16006/tcp  --開啟redis匯流排埠

redis-cli -h 10.0.8.12 -p 6001 -c -a lin789.   --進入到埠為6001服務里

cluster info   --查看集群信息

cluster nodes  --查看集群節點信息

 六、一些問題記錄

1.哨兵模式開啟,後模擬主機服務宕機,主從無法切換問題,報錯:Next failover delay: I will not start a failover before

解決方案兩種情況:a.如果是單機下搭建的主從模式,可以修改從機conf配置文件,replicaof 127.0.0.1 + 主機埠

                                b.開放防火牆埠,以及雲伺服器防火牆埠

2.單機搭建的集群模式下,進入redis後臺模式,操作redis命令沒有問題,外網連接集群時,訪問拒絕或超時

解決方案:創建集群時直接用外網ip:redis-cli --cluster create --cluster-replicas 1  <外網ip>:6001 <外網ip>:6002 <外網ip>:6003 <外網ip>:6004 <外網ip>:6005 <外網ip>:6006  -a lin789. 

                  依次打開redis防火牆匯流排埠號16001(6001+10000)

                  依次修改對應redis節點下的,redis.confg文件中 cluster-announce-ip 屬性為外網ip

七、參考的一些博客鏈接

redis基本安裝和一些配置
https://www.cnblogs.com/AllWjw/p/15771097.html --redis 安裝
https://www.cnblogs.com/AllWjw/p/15771097.html --redis 安裝
https://blog.csdn.net/weixin_45522528/article/details/126636808 --redis.conf一些說明
https://bxbdba.com/archives/redisredisconf%E8%AF%A6%E8%A7%A3 --redis.config 說明
https://blog.csdn.net/weixin_52270081/article/details/120564024 --linux 命令刪除配置行

主從複製
https://blog.csdn.net/weixin_40980639/article/details/125569460 --主從模式

哨兵模式
https://blog.csdn.net/ycx987/article/details/128517285
https://blog.csdn.net/FlyLikeButterfly/article/details/120780277
https://blog.csdn.net/MssGuo/article/details/127163216 --哨兵模式
https://blog.csdn.net/m0_51426055/article/details/129224592 --哨兵模式的啟動與關閉

集群模式
https://www.cnblogs.com/cjsblog/p/9048545.html -- 集群模式
https://www.cnblogs.com/wzh2010/p/15886799.html --集群模式的一些概念原理
https://www.lmlphp.com/user/58834/article/item/815649/
https://blog.csdn.net/m0_59092234/article/details/126596703 --redis集群一些增容和縮容方法,springboot整合redis集群
https://cloud.tencent.com/developer/article/1919678 --哈希槽分配異常

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 文章代碼分析基於linux-5.19.13,架構基於aarch64(ARM64)。 涉及頁表代碼分析部分: (1)假設頁表映射層級是4,即配置CONFIG_ARM64_PGTABLE_LEVELS=4; (2)虛擬地址寬度是48,即配置CONFIG_ARM64_VA_BITS=48; (3)物理地址 ...
  • ​1、前言 在STM32之前,都是老大頭51,帶著它的“小弟們” MSP430、AVR、PIC在單片機界呼風喚雨。那個時候,市場上遍佈8位機,大學教材用51入門,個人、企業學單片機基本上也都在用51。 雖然AVR也有一些8位機市場,但與stc帶領下的51單片機是完全不能相比的。當然,這個時候也有16 ...
  • # VMware虛擬機聯網詳述 > 網路上東西都是虛擬的,你把握不住 ## 1. 虛擬網路組件 * **虛擬機**(Virtual Machine) 在物理電腦上通過虛擬化技術創建的一臺虛擬電腦。它具有自己的操作系統、應用程式和網路配置,可以獨立運行和管理。 * **虛擬化軟體**(Virtua ...
  • -- 痞子衡維護的NXP-MCUBootUtility工具距離上一個大版本(v4.0.0)發佈過去4個多月了,期間痞子衡也做過兩個小版本更新,但不足以單獨介紹。這一次痞子衡為大家帶來了全新大版本v5.0.0,這次更新主要是想和大家特別聊聊恩智浦新一代 i.MXRT 旗艦 RT1180。 ### 一、 ...
  • 主機操作系統:windows11 虛擬機操作系統:centos7、kali vmware版本:16 (27條消息) 超詳細虛擬機與主機網路連接以及互Ping不通問題的解決_虛擬機無法ping通主機_一隻傻陽陽的博客-CSDN博客 通過此連接中的教程,事實上幾乎沒有進行什麼配置,僅配置了centos7 ...
  • # 概述 Typecho是一款輕量級的開源PHP博客系統,它簡單易用,界面整潔,性能高效,主題、插件眾多。我使用的是騰訊雲輕量伺服器,Typecho的應用模版,一鍵安裝環境。構建自己的博客網站,記錄生活、分享經驗。 ## 購買功能變數名稱、備案、申請SSL 這樣在之後創建完typecho伺服器,就會在ngi ...
  • 本文是線上問題處理案例系列之一,旨在通過真實案例向讀者介紹發現問題、定位問題、解決問題的方法。本文講述了從垃圾回收耗時過長的表象,逐步定位到資料庫連接池保活問題的全過程,並對其中用到的一些知識點進行了總結。 ...
  • 摘要:本文詳細梳理分析了DWS服務面臨軟硬體故障場景和對應的修複原理,希望藉此能夠讓你對DWS的集群故障修複有個全面深入的瞭解。 本文分享自華為雲社區《GaussDB(DWS)故障修複系統性介紹》,作者: 聞鮮生。 DWS是一個分散式架構的MPP集群,物理部署上涉及數百數千台主機和對應的磁碟,以及這 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...