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

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