安裝redis、配置redis
目錄
一、 概述
(一)NoSQL
1、類型
2、應用場景
(二)Redis
二、安裝
(一)編譯安裝
(二)RPM安裝
三、目錄結構
四、命令解析
五、redis登錄更改
1、發現問題
2、解決辦法
六、數據庫操作
(一)登錄數據庫
(二)幫助信息
1、help 命令字
2、tab補齊
(三)庫操作
1、切換
(四)數據操作
七、redis持久化
(一)RDB模式
(二)AOF模式
一、 概述
(一)NoSQL
? ? ? ?NoSQL(Not Only SQL)是一種非關系型數據庫(Non-Relational Database),與傳統的關系型數據庫(SQL)相對應。NoSQL數據庫以靈活的模式和可伸縮性為特點,適用于大規模數據的存儲和處理。
? ? ? ?與關系型數據庫不同,NoSQL數據庫不使用固定的表格和預定義的模式,而是使用動態的模式和靈活的數據模型。這意味著在NoSQL數據庫中,可以存儲不同結構和類型的數據,并且可以根據需求隨時更改模式,而不需要進行預定義的表定義和模式修改。
? ? ? ?NoSQL數據庫的設計目標是提供高性能、高可用性和可伸縮性。它們通常采用分布式架構,可以在多個服務器上分布數據,并以水平擴展的方式處理大量的讀寫操作。
? ? ? ?NoSQL數據庫被廣泛應用于互聯網和大數據領域,適用于需要處理海量數據和實時數據的場景,例如社交媒體、物聯網、日志分析等。常見的NoSQL數據庫包括MongoDB、Cassandra、Redis、Couchbase等。
1、類型
文檔型數據庫(Document-oriented database) | MongoDB |
Couchbase | |
Apache CouchDB | |
RethinkDB | |
列族數據庫(Column-family database) | Apache Cassandra |
Apache HBase | |
ScyllaDB | |
圖形數據庫(Graph database) | Neo4j |
Amazon Neptune | |
Microsoft Azure Cosmos DB (Graph API) | |
鍵值對數據庫(Key-value database) | Redis |
Riak | |
CouchDB | |
對象數據庫(Object-oriented database) | ObjectDB |
db4o | |
Versant Object Database |
2、應用場景
? ? ? ? 緩存:Redis最常用的應用場景就是緩存,它可以緩存各種類型的數據,如數據庫查詢結果、API返回結果等,以提高應用程序的響應速度和并發性能。
? ? ? ? 分布式鎖:Redis的分布式鎖可以確保在分布式系統中對某個資源的互斥訪問,避免多個節點出現并發操作的問題。
? ? ? ? 計數器:Redis支持對計數器的操作,能夠方便地實現各種計數器的功能,如網站訪問次數計數、訂單數量計數等。
? ? ? ? 會話管理:Redis可以用來管理會話信息,實現會話的狀態存儲和共享,避免了單點故障的問題。
? ? ? ? 消息隊列:Redis支持發布訂閱模式,可以作為一個輕量級的消息隊列使用,實現異步消息處理和任務派發等功能。
(二)Redis
? ? ? ?Redis [Remote Dictionary Server] 是一個開源(BSD許可),內存存儲的數據結構服務器,可用作數據庫,高速緩存和消息隊列代理。它支持字符串、哈希表、列表、集合、有序集合,位圖,hyperloglogs等數據類型。內置復制、Lua腳本、LRU收回、事務以及不同級別磁盤持久化功能,同時通過Redis Sentinel提供高可用,通過Redis Cluster提供自動分區。
? ? ? ?基本的鍵值對操作,Redis還支持豐富的功能,如發布/訂閱(pub/sub)模式、事務、Lua腳本、分布式鎖等。它還可以作為緩存層,提供高速緩存以加快應用程序的性能。
? ? ? ?Redis被廣泛應用于互聯網領域,用于緩存、會話存儲、消息隊列、實時分析、計數器等場景。它的簡單性和高性能使得它成為許多應用程序的首選數據存儲解決方案。
? ? 英文官網(官方高版本)
https://redis.io/
? ? 中文官網(版本相對較低)
https://www.redis.net.cn/
? ? 監聽端口號? ? ? ? 6379
? ? 軟件包? ? ? ? ? ?? ? redis
? ? 數據類型
? ? ? ? 字符串(string)
? ? ? ? 哈希值(hash)
? ? ? ? 列表(list)
? ? ? ? 集合(set)
? ? ? ? 有序集合(sorted set)
? ? ? ? 位圖(bitmap)
? ? ? ? hyperloglogs
二、安裝
(一)編譯安裝
wget http://download.redis.io/releases/redis-5.0.8.tar.gz
make && make install
(二)RPM安裝
? ?安裝repl源
yum install -y epel-release
?此命令數輸入兩次為升級repl源?
yum install -y redis
?? ? 啟動redis(任選其一即可)
systemctl start redis
redis-server /etc/redis.conf
? ? 默認監聽127.0.0.1地址
三、目錄結構
查看已安裝軟件包的安裝路徑及生成的文件
rpm ?-ql redis
?? ? ? ? 主配置文件
vim /etc/redis.conf
? ? ? ? ?常用主配置文件解析
bind 127.0.0.1 | 監聽地址 |
port 6379 | 監聽端口號 |
daemonize | 是否將程序或進程轉變為守護進程,在后臺運行 |
pidfile | 指定通過該配置文件啟動 reids進程后的PID文件名稱 |
loglevel | 定義日志級別 |
logfile | 定義日志存儲路徑 |
databases | 指定默認數據庫數量 |
save | 定義單位時間內key的改變次數 |
dbfilename | 定義存儲RDB持久化數據的文件名稱 |
dir | 定義RDB與AOF文件的存儲目錄 |
appendonly | AOF的啟停 |
appendfilename | 定義AOF持久化文件的名稱 |
appendfsync | 定義AOF數據同步間隔 |
requirepass? | 設置登錄redis的密碼 |
? ? ? ? ? 哨兵模式配置文件
vim /etc/redis-sentinel.conf
? ? ? ? ?持久化文件存儲目錄
cd /var/lib/redis
?? ? ? ? ?日志文件存儲目錄
cd /var/log/redis
? ? ? ? ?PID文件存儲目錄
cd /var/run/redis
四、命令解析
? ? ? ? redis啟動命令
redis-server 配置文件目錄
? ? ? ? redis登錄命令
redis-cli
命令選項 | |
---|---|
-h | redis服務器IP |
-p | 指定訪問端口號 |
-a | 指定登錄密碼 |
-n | 指定數據庫編號 |
-a 指定登錄密碼的配置文件設置在/etc/redis.conf
?命令使用方式
redis-cli -h 192.168.41.130 -p 6379 -a 123123 -n 1
? ? ? ?注:如果端口號為默認端口,可以不進行指定;密碼可-a輸入,也可進入后auth 123123 輸入密碼;-n端口為0~16 ,共17個數據庫。
? ? ? ? 檢查RDB文件?
redis-check-rdb
redis-check-rdb /var/lib/redis/dump.rdb
?內容解析:
[offset 0] Checking RDB file /var/lib/redis/dump.rdb
:開始檢查RDB文件/var/lib/redis/dump.rdb
。
[offset 27] AUX FIELD redis-ver = '3.2.12'
:redis-ver
是RDB文件中的一個輔助字段,指示Redis的版本號為3.2.12。
[offset 41] AUX FIELD redis-bits = '64'
:redis-bits
是RDB文件中的一個輔助字段,指示Redis的位數為64位。
[offset 53] AUX FIELD ctime = '1691495331'
:ctime
是RDB文件中的一個輔助字段,指示創建RDB文件的時間(Unix時間戳)。
[offset 68] AUX FIELD used-mem = '754984'
:used-mem
是RDB文件中的一個輔助字段,指示在創建RDB文件時Redis使用的內存量。
[offset 70] Selecting DB ID 0
:選擇了數據庫ID為0的數據庫。
[offset 98] Checksum OK
:RDB文件的校驗和是正確的,沒有發現數據損壞。
[offset 98] \o/ RDB looks OK! \o/
:整個RDB文件的檢查沒有發現錯誤,RDB文件看起來是完好的。
[info] 2 keys read
:讀取了2個鍵值對。
[info] 0 expires
:沒有過期的鍵值對。
[info] 0 already expired
:沒有已經過期的鍵值對。
? ? ? ? 檢查AOF文件
redis-check-aof [--fix] <aof-file>
--fix
選項可用于修復AOF文件中的錯誤。
<aof-file>
是AOF文件的路徑和名稱。?
首先停止Redis服務器,以確保AOF文件不會被修改。
使用redis-check-aof命令來檢查AOF文件的正確性。命令的使用方式如下:
redis-check-aof /var/lib/redis/appendonly.aof
?注:
如果使用了
--fix
選項修復了AOF文件中的錯誤,建議再次運行redis-check-aof命令來驗證修復是否成功。確認AOF文件已經正確修復后,可以啟動Redis服務器,并將修復后的AOF文件用作持久化文件。
五、redis登錄更改
開啟從服務需要復制配置文件,更改其監聽端口號,理論上可以開設無限個從服務器,更改其監聽端口即可(首先需要有一個特別特別好的電腦配置,不然不建議嘗試,系統會崩)。
cp /etc/redis.conf /opt/redis_6380.conf
1、發現問題
? ? 更改完port后,systemctl啟動redis異常
2、解決辦法
? ? 使用redis-server /opt/redis_6380.conf?
redis-server /opt/redis_6380.conf
?此時發現進程為前臺進程,影響操作
?? ? 若要redis后臺運行需修改配置文件,將daemonize的值改為yes
vim /etc/redis.conf
?
?再次輸入命令進行檢查
?檢查監聽端口進行查看
六、數據庫操作
(一)登錄數據庫
? ? 本地登錄
? ? ? ? 監聽回環地址(127.0.0.1)
redis-cli
?
?? ? ? ? 監聽本地網卡地址
? ? ? ? ? ? redis-cli -h IP -p 端口號
redis-cli -h 192.168.41.130 -p 6379
?此時因為更改過redis 的監聽地址,在使用時則會進行報錯。需添加IP地址和監聽端口。(監聽端口前文已經說過,再次不在過多追述)
? ? 遠程登錄
redis-cli -h 192.168.41.130 -p 6379 -n 0
(二)幫助信息
1、help 命令字
?
2、tab補齊
(三)庫操作
1、切換
select 1
?
(四)數據操作
? ? set? ? ? ? 設置鍵值對
? ? ? ? set key value
set name zn
?
?? ? keys
? ? ? ? keys *? ? ? ? ? ? 查看所有鍵的名稱
keys *?
?
?? ? ? ? keys 鍵名稱? ? ? ? ? ? 查看一個鍵是否存在
keys name
?
?? ? get
? ? ? ? 取出鍵值對
get name
?
?? ? ? ? get 鍵
? ? ? ? 鍵不存在則返回空
get aaa
?? ? del
? ? ? ? 刪除鍵值對? ? ? ? del key
del name
del aaa
?如果成功則返回結果為1,不成功則為0。這里我們沒有創建aaa的鍵,所以返回結果為0。
?? ? flushall? ? ? ? 清空所有數據庫中的數據
flushall
?? ? rename? ? ? ? 重命名鍵名稱
? ? ? ? 不論更名后的鍵是否存在都會覆蓋原有鍵,并將改名前的鍵的值賦予改名后的鍵
? ? ? ? rename oldkey newkey
rename zn zm
?? ? renamenx? ? ? ? 重命名鍵名稱
? ? ? ? 假如改名后鍵名稱存在則更改不成功
? ? ? ? renamenx oldkey newkey
renamenx zm zn
?? ? move
? ? ? ? 移動鍵值對到指定數據庫
? ? ? ? move key dbnumber
? ? ? ? 假如目標數據庫中存在同名鍵則移動失敗
move zn 0
?
?? ? ttl
? ? ? ? 查看鍵值對的生命周期
? ? ? ? ttl key
? ? ? ? ? ? -1? ? ? ? ? ? ? ? 永久
? ? ? ? ? ? -2? ? ? ? ? ? ? ? 已過期
?? ? expire
? ? ? ? 設置鍵值對的存儲周期
? ? ? ? expire key seconds
?
七、redis持久化
(一)RDB模式
? ? 默認持久化
? ? /var/lib/redis/dump.rdb? ? ? ? 數據庫啟動時會讀取
觸發條件 | redis進程退出 | 宕機 |
redis程序崩潰 | ||
手動保存(觸發RDB) | save |
(二)AOF模式
? ? 默認關閉,需手動打開
vim /etc/redis.conf
? ? ? ? 可以與RDB同時使用?
?重啟服務
systemctl restart redis
?去數據庫添加內容,而后返回查看
set aaa 123123
?
? ? ? ? 默認進程啟動時讀取? ? ? ? appendonly ?yes
?內容解析:
$6
: 這是一個長度字段,表示后面的字符串的長度為6個字節。
SELECT
: 這是一個Redis命令,表示切換到指定的數據庫。在這里,它表示切換到數據庫0。
$11
: 這是一個長度字段,表示后面的字符串的長度為11個字節。
*3
: 這是一個Redis命令,表示執行一個命令組,后面跟著3個命令。
$3
: 這是一個長度字段,表示后面的字符串的長度為3個字節。
set
: 這是一個Redis命令,表示設置一個鍵值對。
$3
: 這是一個長度字段,表示后面的字符串的長度為3個字節。
aaa
: 這是一個鍵名。
$6
: 這是一個長度字段,表示后面的字符串的長度為6個字節。
123123
: 這是一個值。