Redis8.0.3編譯化安裝的實(shí)現(xiàn)
前置
原服務(wù)器已部署redis
1.docker 部署的redis卸載
停止后,先別急著刪除容器,待編譯化安裝完成后 在移除
# 停止redis服務(wù) docker stop redis #redis名稱是當(dāng)時(shí)部署設(shè)置的名稱 # 刪除容器 docker rm redis
2.apt-get 安裝的redis卸載
命令會(huì)刪除redis-server 軟件包,和不再需要的其他相關(guān)軟件包(因?yàn)?`--auto-remove` 參數(shù))。它還會(huì)刪除 redis-server 的本地/配置文件(因?yàn)?`purge` 參數(shù))
sudo apt-get purge --auto-remove redis-server
3.makefile 編譯安裝的卸載
3.1.停止已經(jīng)啟動(dòng)的redis 容器
sudo service redis_6379 stop
3.2 刪除 `usr/local/bin/` 中所有 redis 相關(guān)的文件
sudo rm -r /etc/redis/
3.3 刪除配置目錄和內(nèi)容
sudo rm -r /etc/redis/
3.4刪除日志
sudo rm /var/log/redis_*
3.5刪除數(shù)據(jù)目錄和內(nèi)容
sudo rm -r /var/lib/redis/
3.6刪除初始化腳本
sudo rm /etc/init.d/redis_*
3.7刪除現(xiàn)有的Redis PID文件(僅當(dāng)存在時(shí))
sudo rm /var/run/redis_*
Redis 編譯化安裝
1.創(chuàng)建目錄并下載redis
# 創(chuàng)建對(duì)應(yīng)的文件目錄 mkdir -p /usr/local/redis /usr/local/redis/install # 到對(duì)應(yīng)的目錄下 cd /usr/local/redis # 下載redsi 8.0.3壓縮包 wget https://download.redis.io/releases/redis-8.0.3.tar.gz


2.解壓縮 redis安裝包
tar -zxf redis-8.0.3.tar.gz -C /usr/local/redis
3.安裝redis的編譯環(huán)境
yum -y install gcc automake autoconf libtool make gcc-c++

4.編譯安裝redis
#到redis的解壓目錄下 cd /usr/local/redis/redis-8.0.3 # 第一次編譯,編譯redis的代碼,生成必要的中間文件(校驗(yàn)原代碼) make # 第二次編譯 確保所有依賴項(xiàng)(如 jemalloc)被正確編譯并鏈接到 Redis 的主二進(jìn)制文件中 make install PREFIX=/usr/local/redis/install

5.測(cè)試是否可以啟動(dòng)
/usr/local/redis/install/bin/redis-server /usr/local/redis/redis-8.0.3/redis.conf
出現(xiàn)下面的界面就是正常的

6.更換配置文件
# 綁定IP地址,0.0.0.0表示監(jiān)聽所有網(wǎng)絡(luò)接口
bind 0.0.0.0
# 是否啟用保護(hù)模式(yes-只允許本地訪問,no-允許外部訪問)
protected-mode yes
# 服務(wù)監(jiān)聽端口號(hào)
port 6379
# 客戶端訪問密碼
requirepass herodoo
# TCP連接隊(duì)列長(zhǎng)度,高并發(fā)場(chǎng)景建議增大
tcp-backlog 511
# 客戶端空閑超時(shí)時(shí)間(0表示不關(guān)閉連接)
timeout 0
# TCP keepalive間隔時(shí)間(秒)
tcp-keepalive 300
# 是否以守護(hù)進(jìn)程方式運(yùn)行(yes-后臺(tái)運(yùn)行)
daemonize yes
# 進(jìn)程ID文件存儲(chǔ)路徑
pidfile /var/run/redis_6379.pid
# 日志級(jí)別(debug/verbose/notice/warning)
loglevel notice
# 日志文件路徑(空字符串表示輸出到標(biāo)準(zhǔn)輸出)
logfile ""
# 數(shù)據(jù)庫(kù)數(shù)量(默認(rèn)16個(gè),這里設(shè)置為10)
databases 10
# 是否顯示Redis logo(no-不顯示)
always-show-logo no
# 是否在進(jìn)程標(biāo)題中顯示Redis信息
set-proc-title yes
# 進(jìn)程標(biāo)題模板格式
proc-title-template "{title} {listen-addr} {server-mode}"
# 系統(tǒng)本地化設(shè)置(空表示使用系統(tǒng)默認(rèn))
locale-collate ""
# RDB保存出錯(cuò)時(shí)是否停止寫入(防止數(shù)據(jù)不一致)
stop-writes-on-bgsave-error yes
# 是否壓縮RDB文件(yes-壓縮節(jié)省空間)
rdbcompression yes
# 是否校驗(yàn)RDB文件(yes-增加CRC64校驗(yàn)和)
rdbchecksum yes
# RDB快照文件名
dbfilename dump.rdb
# 主從同步時(shí)是否刪除臨時(shí)RDB文件(no-保留)
rdb-del-sync-files no
# 數(shù)據(jù)存儲(chǔ)目錄(./表示當(dāng)前目錄)
dir ./
# 從庫(kù)是否繼續(xù)服務(wù)舊數(shù)據(jù)當(dāng)同步中斷時(shí)(yes-繼續(xù))
replica-serve-stale-data yes
# 從庫(kù)是否只讀(yes-防止意外寫入)
replica-read-only yes
# 是否使用無(wú)盤同步(yes-主庫(kù)直接通過socket發(fā)送RDB)
repl-diskless-sync yes
# 無(wú)盤同步延遲時(shí)間(秒,等待更多從庫(kù)連接)
repl-diskless-sync-delay 5
# 無(wú)盤同步最大從庫(kù)數(shù)量(0-不限制)
repl-diskless-sync-max-replicas 0
# 從庫(kù)加載RDB方式(disabled-禁用無(wú)盤加載)
repl-diskless-load disabled
# 是否禁用TCP_NODELAY(no-啟用減少延遲)
repl-disable-tcp-nodelay no
# 從庫(kù)優(yōu)先級(jí)(主庫(kù)故障時(shí)選舉順序)
replica-priority 100
# ACL日志最大長(zhǎng)度
acllog-max-len 128
# 內(nèi)存淘汰時(shí)是否異步釋放內(nèi)存
lazyfree-lazy-eviction no
# 過期鍵刪除是否異步
lazyfree-lazy-expire no
# 服務(wù)端刪除命令是否異步
lazyfree-lazy-server-del no
# 從庫(kù)接收RDB后是否異步刷新數(shù)據(jù)
replica-lazy-flush no
# 用戶DEL命令是否異步
lazyfree-lazy-user-del no
# FLUSH命令是否異步
lazyfree-lazy-user-flush no
# 是否調(diào)整OOM分?jǐn)?shù)(防止被系統(tǒng)kill)
oom-score-adj no
# OOM分?jǐn)?shù)調(diào)整值(不同角色不同權(quán)重)
oom-score-adj-values 0 200 800
# 是否禁用透明大頁(yè)(yes-避免延遲問題)
disable-thp yes
# 是否啟用AOF持久化(no-僅RDB)
appendonly no
# AOF文件名
appendfilename "appendonly.aof"
# AOF文件目錄名(多文件AOF時(shí)使用)
appenddirname "appendonlydir"
# AOF同步策略(everysec-每秒同步)
appendfsync everysec
# AOF重寫期間是否同步寫入(no-同步)
no-appendfsync-on-rewrite no
# AOF重寫觸發(fā)條件(比上次大100%且超過64MB)
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
# 是否加載被截?cái)嗟腁OF文件(yes-繼續(xù))
aof-load-truncated yes
# AOF是否使用RDB前導(dǎo)(混合持久化)
aof-use-rdb-preamble yes
# AOF是否記錄時(shí)間戳(no-不記錄)
aof-timestamp-enabled no
# 慢查詢閾值(微秒,10000=10毫秒)
slowlog-log-slower-than 10000
# 慢查詢?nèi)罩咀畲箝L(zhǎng)度
slowlog-max-len 128
# 延遲監(jiān)控閾值(0-禁用監(jiān)控)
latency-monitor-threshold 0
# 鍵空間通知配置(空字符串-禁用)
notify-keyspace-events ""
# Hash類型優(yōu)化參數(shù)
hash-max-listpack-entries 512
hash-max-listpack-value 64
# List類型優(yōu)化參數(shù)(-2表示特殊編碼)
list-max-listpack-size -2
# List壓縮深度(0-不壓縮)
list-compress-depth 0
# Set類型優(yōu)化參數(shù)
set-max-intset-entries 512
set-max-listpack-entries 128
set-max-listpack-value 64
# Zset類型優(yōu)化參數(shù)
zset-max-listpack-entries 128
zset-max-listpack-value 64
# HyperLogLog稀疏表示最大字節(jié)數(shù)
hll-sparse-max-bytes 3000
# Stream類型節(jié)點(diǎn)參數(shù)
stream-node-max-bytes 4096
stream-node-max-entries 100
# 是否主動(dòng)rehash(yes-每100ms rehash)
activerehashing yes
# 客戶端輸出緩沖區(qū)限制
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
# 后臺(tái)任務(wù)執(zhí)行頻率(1-500,默認(rèn)10)
hz 10
# 是否動(dòng)態(tài)調(diào)整hz值(根據(jù)客戶端數(shù)量)
dynamic-hz yes
# AOF重寫時(shí)是否增量同步(減少磁盤IO)
aof-rewrite-incremental-fsync yes
# RDB保存時(shí)是否增量同步
rdb-save-incremental-fsync yes
# 是否啟用jemalloc后臺(tái)線程
jemalloc-bg-thread yes7.配置環(huán)境變量
vim /etc/profile
新增以下內(nèi)容:
REDIS_HOME=/usr/local/redis/install PATH=$PATH:$REDIS_HOME/bin

使配置生效
source /etc/profile
8.設(shè)置開機(jī)自啟
cd /usr/lib/systemd/system touch redis.service vi redis.service
[Unit] Description=redis-server After=network.target [Service] Type=forking # 當(dāng)前需要絕對(duì)路徑 ExecStart=/usr/local/redis/install/bin/redis-server /usr/local/redis/redis-8.0.3/redis.conf PrivateTmp=true [Install] WantedBy=multi-user.target
#重載系統(tǒng)服務(wù) systemctl daemon-reload #設(shè)置開機(jī)自啟 systemctl enable redis.service #取消開機(jī)自啟 systemctl disable redis.service #啟動(dòng)服務(wù) systemctl start redis.service #停止服務(wù) systemctl stop redis.service #查看服務(wù)狀態(tài) systemctl status redis.service #查看是否運(yùn)行 ps -aux | grep redis #檢查進(jìn)程是否存在 ps -ef | grep redis #檢查端口是否監(jiān)聽 netstat -anlp | grep 6379

到此這篇關(guān)于Redis8.0.3編譯化安裝的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Redis 8.0.3 編譯安裝內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解Redis數(shù)據(jù)類型實(shí)現(xiàn)原理
這篇文章主要介紹了Redis數(shù)據(jù)類型實(shí)現(xiàn)原理,在工作中或?qū)W習(xí)中有需要的小伙伴可以參考一下這篇文章2021-08-08
redis key命名規(guī)范的設(shè)計(jì)
如果結(jié)構(gòu)規(guī)劃不合理、命令使用不規(guī)范,會(huì)造成系統(tǒng)性能達(dá)到瓶頸、活動(dòng)高峰系統(tǒng)可用性下降,也會(huì)增大運(yùn)維難度,本文主要介紹了redis key命名規(guī)范的設(shè)計(jì),感興趣的可以了解一下2024-03-03
基于redis實(shí)現(xiàn)分布式鎖的原理與方法
這篇文章主要給大家介紹了基于redis實(shí)現(xiàn)分布式鎖的原理與方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用redis具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
Redis的數(shù)據(jù)過期清除策略實(shí)現(xiàn)
Redis實(shí)現(xiàn)了數(shù)據(jù)過期清除策略,本文將深入解析Redis的數(shù)據(jù)過期清除策略,包括過期鍵的刪除方式、清除策略的選擇以及相關(guān)配置參數(shù)的介紹,感興趣的可以了解一下2024-05-05
redis實(shí)現(xiàn)動(dòng)態(tài)字符串SDS
簡(jiǎn)單動(dòng)態(tài)字符串是Redis的基本數(shù)據(jù)結(jié)構(gòu)之一,用于存儲(chǔ)字符串和整型數(shù)據(jù),本文主要介紹了redis實(shí)現(xiàn)動(dòng)態(tài)字符串SDS,具有一定的參考價(jià)值,感興趣的可以了解一下2024-04-04
redislive監(jiān)控redis服務(wù)的圖文教程_動(dòng)力節(jié)點(diǎn)Java 學(xué)院整理
這篇文章主要介紹了redislive監(jiān)控redis服務(wù)的圖文教程_動(dòng)力節(jié)點(diǎn)Java 學(xué)院整理,需要的朋友可以參考下2017-08-08

