曾經(jīng)“紅極一時(shí)”的緩存工具:關(guān)于Redis的15個(gè)有趣事實(shí)
本文轉(zhuǎn)載自公眾號(hào)“讀芯術(shù)”(ID:AI_Discovery)。
默認(rèn)情況下,Redis是一個(gè)緩存存儲(chǔ)器,被調(diào)用作數(shù)據(jù)庫(kù)使用。它利用易失性內(nèi)存,可以為用戶提供完整的持久性選項(xiàng)和對(duì)其他數(shù)據(jù)類型的支持。
從前有一段時(shí)間,Redis是個(gè)全球流行的工具。對(duì)于這個(gè)曾經(jīng)橫行全球的緩存工具你了解多少,和我一起開啟一場(chǎng)關(guān)它的技巧和事實(shí)之旅吧。
1. 持久性允許用戶將Redis視為合法的數(shù)據(jù)庫(kù),而不是不穩(wěn)定的臨時(shí)緩存。如果使用類似的工具“Memcached”重啟,它將丟失相關(guān)信息,但Redis可以將數(shù)據(jù)無(wú)損保存并且保持完整。
2. Redis擁有使用所有流行語(yǔ)言開發(fā)的客戶端API:C、Ruby、Java、JavaScript和Python。
3. Redis版本2.0的發(fā)布提供了擴(kuò)散數(shù)據(jù)的功能,應(yīng)用了訂閱/發(fā)布消息傳遞協(xié)議(Subscribe/Publish messagingprotocol),也就是pub-sub模型。
4. CPU性能不是Redis的最大障礙,它要么是內(nèi)存受限,要么是網(wǎng)絡(luò)受限。但是,如果出現(xiàn)這種情況,水平/垂直擴(kuò)展有助于克服任何與CPU相關(guān)問題。
5. 與MongoDB等傳統(tǒng)數(shù)據(jù)庫(kù)不同,Redis支持事務(wù)。
6. Redis的持久性和關(guān)系數(shù)據(jù)庫(kù)(RDB):以AOF方式按指定間隔(數(shù)據(jù)備份)對(duì)數(shù)據(jù)集進(jìn)行時(shí)間點(diǎn)快照,記錄服務(wù)器接收到的每個(gè)寫入(write)操作。
7. Redis的快照或Redis后臺(tái)保存過程只有在服務(wù)器沒有后續(xù)執(zhí)行命令時(shí)才會(huì)介入,因此可保證任何在隨機(jī)存儲(chǔ)器(RAM)中報(bào)告為基元的指令在磁盤快照中,也被報(bào)告為基元。
8. 如果您喜歡使用Java,可以使用“Jedis”,這是一個(gè)Java客戶機(jī),可以將Java應(yīng)用程序與Redis連接起來(lái)。注意,一個(gè)單獨(dú)的“Jedis”實(shí)例不是線程安全的。為了避免這些問題,“JedisPool”出現(xiàn)了,它是一個(gè)線程安全的網(wǎng)絡(luò)連接池,默認(rèn)最大為8。
9. Redis具有數(shù)據(jù)庫(kù)功能。即使與緩存的優(yōu)點(diǎn)結(jié)合起來(lái),它的性能也非常好。事實(shí)上,如果不需要持久性,就可以暫時(shí)關(guān)閉,因?yàn)樗部捎糜诰彺妗?/p>
10. 在數(shù)據(jù)總是留于內(nèi)存中這一方面,Redis極大地顯示了自己的性能。它超過常規(guī)數(shù)據(jù)庫(kù)的讀寫操作能力使開發(fā)人員著迷。

11. 許多行業(yè)領(lǐng)先的公司都使用Redis,包括Twitter、Pinterest和Github,他們是Redis項(xiàng)目的早期采用者,就像DLT實(shí)驗(yàn)室一樣。
12. Redis將數(shù)據(jù)存儲(chǔ)為鍵值對(duì),其中某些類型的數(shù)據(jù)結(jié)構(gòu)充當(dāng)鍵。此外,它還允許對(duì)象將其鍵和值的上限設(shè)置為512兆字節(jié)。這種鍵散列的系統(tǒng),可用于存儲(chǔ)鍵-值對(duì),被稱為Redis哈希表。
13. Redis最多可以處理2³²個(gè)鍵,實(shí)際測(cè)試中,每個(gè)實(shí)例至少可以處理2.5億個(gè)鍵。換句話說,使用Redis的限制很可能是機(jī)器/基礎(chǔ)結(jié)構(gòu)中的可用內(nèi)存。
14. Redis里每個(gè)可能存在的數(shù)據(jù)結(jié)構(gòu)都可以容納2³²個(gè)元素,即hash、list、set和sorted set達(dá)到峰值時(shí)可以使用2³²個(gè)元素。
15. 盡管如此,到目前為止Redis在最容易設(shè)置的軟件的排行中仍然位列第二,不要問第一是誰(shuí)!
最后,友情奉送一個(gè)小提示,為了用更有效的分配方式實(shí)現(xiàn)Linux性能(這是Redis理想的配置方式):將overcommit_memory設(shè)置為1。