您好,登錄后才能下訂單哦!
本篇內容介紹了“Redis的特點及功能”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
Redis創建者,出生于西西里島的意大利人(antirez)發明的,個人網站,http://invece.org。早年是系統管理員,2004-2006 年做嵌入式方面的工作,之后接觸 WEB,2007 年和朋友共同創建了一個網站 LLOOGG.com,并為了解決這個網站的負載問題而在 2009 年發明了 Redis。
說到這個 LLOOGG.com 網站,我們來看看這個到底是個干嘛的網站,LLOOGG.com網站是一個訪客信息追蹤網站,網站可以通過 javascript 腳本,將訪客的 IP 地址、所屬國家、閱覽信息、訪問頁面地址等數據傳送給 LLOOGG.com。
三個網站正在向 LLOOGG.com 發送它們的訪客瀏覽記錄
這個就是 LLOOGG.com 的用戶界面,ps:Google 的 Analytics知道 2011 年才有了實時功能,所以說 LLOOGG.com 的實時反饋想法在當時 2007 年還是很有新意的。
LLOOGG 的運作方式
比如說這里有三個網站,為了記錄每個被追蹤網站的瀏覽信息,LLOOGG.com 需要為每個被追蹤的網站創建一個列表(list),每個列表需要根據用戶的設置,儲存最新的 5到10000 條瀏覽記錄
各個網站發送的瀏覽記錄會分別進入相應的隊列
FIFO 機制,當列表的長度超過用戶指定的最大長度時,程序每向列表推入一條記錄,就需要從列表中彈出一條最舊的記錄,圖中展示比如用戶設置列表最大長度為 5
LLOOGG 怎么引起負載問題的呢?
隨著 LLOOGG 的用戶越來越多,LLOOGG 要維護的列表數量也越來越多,要執行的推入和彈出操作也越來越多,當時 LLOOGG 當時使用 MYSQL 數據庫,而每次 MYSQL執行推入和彈出操作都要進行硬盤寫入和讀取,程序的性能嚴重受制于硬盤 I/O,很多操作都堆在那里,然后網站整個就沒法運作了。
這個負載問題的根本原因就是這個硬盤 IO,所以 antirez 在不改變硬件的基礎上,通過提升列表操作的性能來解決負載問題,決定自己寫一個具有列表結構的內存數據庫原型。最重要的是數據存儲在內存而不是硬盤,所以程序的性能不會受到硬盤 IO 限制,可以以極快的速度執行針對列表的堆入和彈出操作。結果試驗,確實解決了 LLOOGG 當時
的負載問題,于是 antirez 使用 C 語言重寫了這個內存數據庫,并給它加上了持久化功能,這個就是 Redis 的誕生!
世界上有無數種數據庫,為什么要使用 Redis 呢,我們來看看它的優點
我們知道很多數據庫只能處理一種數據結構:
SQL數據庫----二維表格
Memcached----鍵值對數據庫,鍵值都是字符串
文檔數據庫(CouchDB、MongoDB)----由 JSON/BSON 組成的文檔
當然不是他們這些數據庫不好,而是一旦數據庫提供的數據結構并不適合去做某件事的話,程序寫起來就會非常的麻煩和不自然。
Redis 雖然也是鍵值對數據庫,但是和 Memcached 不同的是,Redis 支持多種類型的數據結構,不僅可以是字符串,同時還提供散列(hashes),列表(lists),集合(sets),有序集合(sorted sets)等數據結構。
通過選用不同的數據結構,用戶可以使用 Redis 解決各式各樣的問題。
數據庫有兩種,一種硬盤數據庫,一種內存數據庫
硬盤是把值儲存在硬盤,典型的是 SQL 數據庫
在內存里面就存儲一下索引,當硬盤數據庫想訪問硬盤的值時,它先在內存里面找到索引,然后在找值,問題是什么,在讀取和寫入硬盤的時候,如果讀寫比較多的時候,它會把硬盤 IO 堵死。
至于內存數據庫,它會直接把值放到內存里面,內存數據庫就直接把值取到,風一樣的感覺,讀寫數據的時候都不會受到硬盤 IO 速度的限制,所以速度極快。
Redis支持數據的持久化,可以將內存中的數據保持在磁盤中,重啟的時候可以再次加載進行使用。
Redis支持數據的備份,即master-slave模式的數據備份。
“Redis的特點及功能”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。