Redis 特性

一、鍵的過期

Redis 可以為每個(gè)鍵設(shè)置過期時(shí)間,當(dāng)鍵過期時(shí),會(huì)自動(dòng)刪除該鍵。

二、事務(wù)與流水線

使用 MULTI 和 EXEC 命令將事務(wù)操作包圍起來,一次性發(fā)送給服務(wù)器,這種方式稱為流水線,它可以減少客戶端與服務(wù)器之間的網(wǎng)絡(luò)通信次數(shù)從而提升性能。

三、持久化

將內(nèi)存數(shù)據(jù)持久化到硬盤。

1. 快照持久化

將某個(gè)時(shí)間點(diǎn)的數(shù)據(jù)存放到硬盤。
缺點(diǎn):
如果系統(tǒng)發(fā)生故障,將會(huì)丟失最后一次創(chuàng)建快照之后的數(shù)據(jù)。
如果數(shù)據(jù)量很大,保存快照的時(shí)間會(huì)很長(zhǎng)。

2. AOF 持久化

對(duì)要寫入到硬盤的數(shù)據(jù)先存放到緩沖區(qū),再由以下同步選項(xiàng)決定何時(shí)寫入到硬盤:

選項(xiàng) 同步頻率
always 每個(gè)寫命令都同步,嚴(yán)重減低服務(wù)器的性能
everysec 每秒同步一次,比較合適
no 由操作系統(tǒng)來決定,不能顯著提升性能,反而增加系統(tǒng)奔潰時(shí)數(shù)據(jù)丟失的數(shù)量

當(dāng)然,也可手動(dòng) file.fulsh() 寫入到硬盤。

AOF (Append Only File)文件是用來存放寫命令的,也就是要寫什么入硬盤。隨著服務(wù)器寫請(qǐng)求的增多,AOF 文件會(huì)越來越大,Redis 提供了一種將 AOF 重寫的特性,能夠去除 AOF 文件中的冗余寫命令。

四、復(fù)制

指主服務(wù)器復(fù)制到從服務(wù)器。
首次從服務(wù)器先載入主服務(wù)器發(fā)來的快照文件,之后接受主服務(wù)器發(fā)來的寫命令。

通過使用 slaveof host port 命令來讓一個(gè)服務(wù)器成為另一個(gè)服務(wù)器的從服務(wù)器。

在一個(gè) Redis 集群中,master 負(fù)責(zé)寫請(qǐng)求,slave 負(fù)責(zé)讀請(qǐng)求。
一方面 master 把讀請(qǐng)求分散到其他機(jī)器從而減少了服務(wù)器壓力;
另一方面 slave 專注于提供讀服務(wù)從而提高了響應(yīng)和讀取速度。

五、分片

數(shù)據(jù)分散到多個(gè) Redis 實(shí)例中。
對(duì)比將所有數(shù)據(jù)只存放的單臺(tái) redis 實(shí)例,能大大減輕 redis 實(shí)例壓力。

還有兩個(gè)問題:
一是如何分片,也就是如何合理地把數(shù)據(jù)分成一塊一塊,標(biāo)準(zhǔn)是什么?
二是在哪里進(jìn)行分片,客戶端?服務(wù)器?代理?

六、適用場(chǎng)景

  • 緩存:將熱點(diǎn)數(shù)據(jù)放入緩存。
  • 消息隊(duì)列:LIST 是雙向鏈表,適合用于消息隊(duì)列。
  • 計(jì)數(shù)器:內(nèi)存數(shù)據(jù)庫(kù),適合計(jì)數(shù)器頻繁讀寫操作。
  • 好友關(guān)系:兩個(gè) SET 的交集,可知兩個(gè)用戶的共同好友。

參考文檔:

https://github.com/CyC2018/Interview-Notebook/blob/master/notes/Redis.md

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容