主頁 > 資料庫 > Redis安裝,主從復制、哨兵模式、集群

Redis安裝,主從復制、哨兵模式、集群

2023-05-23 09:37:25 資料庫

淺淺的記錄下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 --哈希槽分配例外

 

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/553137.html

標籤:其它

上一篇:Redis - 二進制位陣列

下一篇:返回列表

標籤雲
其他(159511) Python(38162) JavaScript(25443) Java(18096) C(15230) 區塊鏈(8267) C#(7972) AI(7469) 爪哇(7425) MySQL(7207) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5871) 数组(5741) R(5409) Linux(5340) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4574) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2433) ASP.NET(2403) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) .NET技术(1975) 功能(1967) Web開發(1951) HtmlCss(1940) C++(1919) python-3.x(1918) 弹簧靴(1913) xml(1889) PostgreSQL(1878) .NETCore(1861) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • Redis安裝,主從復制、哨兵模式、集群

    淺淺的記錄下Redis安裝、主從、哨兵、集群。搭建筆記 一.Redis下載安裝 系統環境 redis版本:7.0.11 linux版本:CentOS Linux release 8.2.2004 (Core) 官網下載地址:https://redis.io/download/ 一些安裝命令,按照步驟 ......

    uj5u.com 2023-05-23 09:37:25 more
  • Redis - 二進制位陣列

    數學上有一個“計算漢明重量”的問題,即求取一個二進制位中非 0 的數量。使用 Redis 提供的 Bitmap 統計時恰恰是這樣一個問題,學習后能發現解決辦法卻是如此巧妙。 ......

    uj5u.com 2023-05-23 09:31:42 more
  • Redis單機部署

    # Redis單機部署 ## 1 安裝 下載最新穩定版Redis https://download.redis.io/redis-stable.tar.gz ```shell # 安裝wget yum install -y wget # 安裝gcc環境 yum install gcc-c++ # 獲 ......

    uj5u.com 2023-05-23 09:31:34 more
  • 小白零基礎在 Centos 7 中安裝 mysql

    本文參考這三篇博文,安裝,修改配置,修改密碼。感謝大佬的分享 首先安裝好Centos,并使用xshell連接 一、下載 1、下載安裝檔案 建議自己到這個地址下載 https://dev.mysql.com/downloads/mysql/。選擇以下版本 2、下載完后上傳到系統,并解壓,可以用 tar ......

    uj5u.com 2023-05-23 09:31:17 more
  • 線上問題處理案例:出乎意料的資料庫連接池

    本文是線上問題處理案例系列之一,旨在通過真實案例向讀者介紹發現問題、定位問題、解決問題的方法。本文講述了從垃圾回收耗時過長的表象,逐步定位到資料庫連接池保活問題的全程序,并對其中用到的一些知識點進行了總結。 ......

    uj5u.com 2023-05-23 09:31:11 more
  • 為什么MySQL單表不能超過2000萬行?

    摘要:MySQL一張表最多能存多少資料? 本文分享自華為云社區《為什么MySQL單表不能超過2000萬行?》,作者: GaussDB 資料庫 。 最近看到一篇《我說MySQL每張表最好不要超過2000萬資料,面試官讓我回去等通知》的文章,非常有趣。 文中提到,他朋友在面試的程序中說,自己的作業就是把 ......

    uj5u.com 2023-05-23 09:29:41 more
  • MySQL 并行復制方案演進歷史及原理分析

    有過線上 MySQL 維護經驗的童鞋都知道,主從延遲往往是一個讓人頭疼不已的問題。



    不僅僅是其造成的潛在問題比較嚴重,而且主從延遲原因的定位尤其考量 DBA 的綜合能力:既要熟悉復制的內部原理,又能解讀主機層面的資源使用情況,甚至還要會分析 binlog。



    導致主從延遲的一個常見原因是,... ......

    uj5u.com 2023-05-22 08:39:29 more
  • 一次redis主從切換導致的資料丟失與陷入只讀狀態故障

    ## 背景 最近一組業務redis資料不斷增長需要擴容記憶體,而擴容記憶體則需要重啟云主機,在按計劃擴容升級執行主從切換時意外發生了資料丟失與master進入只讀狀態的故障,這里記錄分享一下。 ## 業務redis高可用架構 該組業務redis使用的是一主一從,通過sentinel集群實作故障時的自動主 ......

    uj5u.com 2023-05-22 08:23:33 more
  • 03、Etcd 客戶端常用命令

    上一講我們安裝 etcd 服務端,這一講我們來一起學學如何使用 etcd 客戶端常見的命令。文章內容來源于參考資料,如若侵權,請聯系洗掉,謝謝。 > etcd可通過客戶端命令列工具 etcdctl 對etcd進行請求操作 ```sh # 幫助命令,會列出所有的命令和選項,在記不太清命令的時候,可以使 ......

    uj5u.com 2023-05-22 08:23:27 more
  • es筆記四之中文分詞插件安裝與使用

    > 本文首發于公眾號:Hunter后端 > 原文鏈接:[es筆記四之中文分詞插件安裝與使用](https://mp.weixin.qq.com/s/aQuwrUzLZDKLv_K8dKeVzw) 前面我們介紹的操作及演示都是基于英語單詞的分詞,但我們大部分使用的肯定都是中文,所以如果需要使用分詞的操 ......

    uj5u.com 2023-05-22 08:23:21 more