[環境搭建] 透過原始碼編譯安裝 Redis

DavidH發表於2024-11-20

一、Redis簡介

(1)什麼是Redis

​ Redis 是完全開源免費的,遵守BSD協議,是一個高效能(NOSQL)的key-value資料庫,Redis是一個開源的使用ANSI C語言編寫、支援網路、可基於記憶體亦可持久化的日誌型、Key-Value資料庫,並提供多種語言的API。在企業開發中, 主要用於做資料庫、快取(熱點資料)、訊息中介軟體等功能

什麼是 BSD 協議?

BSD 是"Berkeley Software Distribution"的縮寫,意思是"伯克利軟體發行版"。

BSD開源協議是一個給於使用者很大自由的協議。可以自由的使用,修改原始碼,也可以將修改後的程式碼作為開源或者專有軟體再發布。BSD程式碼鼓勵程式碼共享,但需要尊重程式碼作者的著作權。BSD由於允許使用者修改和重新發布程式碼,也允許使用或在BSD程式碼上開發商業軟體釋出和銷售,因此是對商業整合很友好的協議。

Redis的特點:

  • 單個key 存入512M大小
  • 支援多種型別的資料結構(string,list,hash,set,zset)
  • Redis是單執行緒 , 原子性
  • 可以持久化 , 因為使用了RDB和AOF機制
  • 支援叢集 , 支援16個庫
  • 可以做訊息佇列 , 例如 聊天室

Redis的優點:

  • 效能高, 高速讀寫
  • 豐富的資料結構
  • 原子性

Redis的缺點:

  • 持久化
  • 耗記憶體

(2)什麼是NoSQL資料庫

​ NoSQL,泛指非關係型的資料庫。隨著網際網路web2.0網站的興起,傳統的關聯式資料庫在應付web2.0網站,特別是超大規模和高併發的SNS型別的web2.0純動態網站已經顯得力不從心,暴露了很多難以克服的問題,而非關係型的資料庫則由於其本身的特點得到了非常迅速的發展。NoSQL資料庫的產生就是為了解決大規模資料集合多重資料種類帶來的挑戰,尤其是大資料應用難

NoSQL資料庫的四大分類:

  • 鍵值(Key-Value)儲存資料庫
  • 列儲存資料庫
  • 文件型資料庫
  • 圖形(Graph)資料庫

NOSQL與SQL :

  • NOSQL : 非關聯式資料庫 , 資料與資料之間沒有關聯關係
  • SQL : 關係型資料庫 , 表與表之間建立關聯關係

**NOSQL資料庫的試用場景 : **

  1. 模型資料比較簡單
  2. 需要靈活性更強的IT系統
  3. 對資料庫效能要求較高
  4. 不需要高度的資料一致性
  5. 對給定的key , 比較容易對映覆雜值的環境

(3)相關網址

Redis官網 : https://redis.io

Redis作者Github : https://github.com/antirez

Redis教程 : https://www.bilibili.com/video/BV1Cb411j7RA?p=1

二、Redis安裝

這裡採用redis-6.0.4版為例 , 需要安裝最新版redis可去官方下載頁檢視:http://redis.io/download

(1)下載Redis並編譯

$ wget http://download.redis.io/releases/redis-6.0.4.tar.gz
$ sudo tar zxvf redis-6.0.4.tar.gz -C /opt
$ cd /opt/redis-6.0.4
$ sudo make

當出現如下資訊, 表示編譯完成

編譯完成.png

(2)安裝redis

sudo make PREFIX=/usr/local/redis install

注意:PREFIX必須大寫、同時會自動為我們建立redis目錄,並將結果安裝此目錄

當出現如下資訊, 表示安裝完成

安裝完成.png

(3)檢視redis安裝目錄

cd /usr/local/redis
tree

可以看到redis已經安裝完成

檢視安裝目錄.png

三、安裝過程中的常見問題

(1)找不到make指令

若找不到make指令, 則需要安裝gcc

CentOS

yum -y install gcc automake autoconf libtool make 

注意:執行yum時出現/var/run/yum.pid已被鎖定,PID為xxxx的另一個程式正在執行的問題解決

rm -f /var/run/yum.pid

ubuntu

sudo apt update
sudo apt install build-essential

四、啟動Redis

(1)啟動Redis服務

cd /usr/local/redis/bin
# 啟動Redis服務端
./redis-server

**啟動Redis 服務端命令: **

redis-server redis.conf

若看到以下內容, 表示Redis服務端啟動成功

Redis服務端啟動.png

(2)啟動Redis客戶端

cd /usr/local/redis/bin
# 啟動Redis客戶端
./redis-cli

**啟動Redis 客戶端命令: **

redis-cli -h IP地址 -p 埠 -a  密碼

退出客戶端命令: Ctrl+C

**檢測是否服務端啟動: **

$ redis-cli
redis 127.0.0.1:6379> PING
PONG

五、關閉Redis服務端

(1)殺死程序

非正常關閉, 容易資料丟失

# 查詢PID 
ps -ef | grep -i redis
# 根據PID殺死程序
kill -9 PID

(2)在客戶端使用shutdown

正常關閉, 資料儲存

$ redis-cli
redis 127.0.0.1:6379> shutdown

在剛剛安裝沒有配置的Redis中, 使用shutdown指令關閉服務端可能會出現如下問題:

Redis無法關閉.png

這是因為Redis安裝的資料夾沒有寫入許可權, 而預設情況下, Redis持久化生成的本地資料庫檔案 dump.rdb, 在Redis的bin目錄中, 我們需要給Redis目錄賦予許可權

cd /usr/local
sudo chmod -R 777 redis/

六、開放防火牆埠

(1)CentOS7

# 檢視已經開放的埠
firewall-cmd --list-ports
# 開啟埠
firewall-cmd --zone=public --add-port=6379/tcp --permanent
# 重啟防火牆
firewall-cmd --reload # 重啟
firewall systemctl stop firewalld.service # 停止
firewall systemctl disable firewalld.service # 禁止防火牆開機啟動

(2)Ubuntu18.4

# sudo iptables -I INPUT -p tcp --dport [埠號] -j ACCEPT
sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT
# 臨時儲存配置,重啟後失效
sudo iptables-save
# 安裝 iptables-persistent工具,持久化開放埠配置
sudo apt-get install iptables-persistent
sudo netfilter-persistent save
sudo netfilter-persistent reload

相關文章