Redis解決了什麼問題?
大規模讀寫資料與資料庫讀寫能力之間的矛盾 時(建議學習中:##3
##’-##Boo-
#)簡單學習:##3#)簡單學習:)簡單學習:2
##)簡單學習:2#-#)簡單學習:簡單學習:
##)簡單學習:2#)簡單學習:##)簡單學習:
##)簡單學習:##)簡單學習:)簡單學習。回顧CPU快取的發展歷程,為了解決CPU的運算速度與記憶體的讀取速度之間的巨大差異,CPU使用高速緩存來存放指令和資料。
類比電腦發展過程中CPU與記憶體的矛盾,可以察覺到大型網站中大規模讀寫資料與資料庫讀寫能力之間的矛盾與此矛盾類似。我們也可以在資料庫與應用程式之間建構一塊比資料庫速度更快儲存區域——快取。
大家最熟悉的也莫過於Redis用作緩存,我們知道Redis的作者設計Redis的初衷是因為他使用關係型資料庫時,無論如何優化,性能都不能達到自己的期望,於是便自己手寫了一個記憶體資料庫。
在作為快取的情況下,我們有一下應用程式場景:
1. 熱點資料 例如我們可以將SQL查詢結果儲存在記憶體中,也可以將使用者經常查看的圖片保存在記憶體中。
基於Redis提供的zset這種資料結構我們可以更方便的實作排行榜。實現排行榜的相關內容可以參考排行榜演算法設計來實現比較。在小規模資料的情況下,使用Mysql實現排行榜沒有太多問題,但是一旦資料量上去了,那麼持續的進行Mysql讀寫將會成為瓶頸。
計數器的應用場景之一是統計用戶的點讚數,限速器的應用場景之一是限制用戶ip的訪問次數。之所以Redis能用於計數器是因為Redis是單執行緒的,每次都必須前一個指令執行完,然後再執行下一個指令。這樣就保證不會同時執行多條指令;也即不會出現並發問題。限速器的原理類似。
4. 共同好友 利用Redis提供的Set資料結構的求交集運算元可以更便捷地求兩個Set集合的交集;而使用資料庫的連表查詢將造成效能的開銷很多,因為大型網站的使用者數量龐大。
######5. 簡單訊息佇列### Redis的提供的發布/訂閱是一個極為簡單的訊息系統。它不像Kafka那樣提供了分成不同的topic並且分成不同的分區並且提供持久化的功能。 Redis的訊息佇列用在不需要高可靠的場景。 ############6. session共享### Session是用來記錄是使用者是誰。當在應用使用叢集方式部署的時候,我們需要一個統一管理session的地方,可以使用資料庫來記錄session,但是這時對資料庫的效能要求較高,此外session通常是具有時效性的,這段邏輯我們需要在程式碼中實現,但是如果使用Redis來共享session,那麼就不會出現這樣的問題。 #########上面的許多應用場景也可以使用其他技術解決問題,只是像###Redis這樣的技術在一定資源限制的情況下,會是更好的解決方案。 #########更多Redis相關技術文章,請造訪###Redis資料庫使用入門教學###欄位學習! ###以上是什麼情況下使用redis緩存的詳細內容。更多資訊請關注PHP中文網其他相關文章!