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