認識redis

                                                                             redis

Redis介紹

Redis是當前比較熱門的NOSQL系統之一,它是一個key-value存儲系統。和Memcache類似,但很大 程度補償了Memcache的不足,它支持存儲的value類型相對更多,包括string、list、set、zset和hash。這些數據類型都支持 push/pop、add/remove及取交集並集和差集及更豐富的操作。在此基礎上,Redis支持各種不同方式的排序。
和Memcache一樣,Redis數據都是緩存在計算機內存中,不同的是,Memcache只能將數據緩存到內存中,無法自動定期寫入硬盤,這就表示, 一斷電或重啓,內存清空,數據丟失。所以Memcache的應用場景適用於緩存無需持久化的數據。而Redis不同的是它會週期性的把更新的數據寫入磁盤 或者把修改操作寫入追加的記錄文件,實現數據的持久化。



Redis是一個開源,高級的鍵值存儲和一個適用的解決方案,用於構建高性能,可擴展的Web應用程序。


Redis有三個主要特點,使它優越於其它鍵值數據存儲系統

  • Redis將其數據庫完全保存在內存中,僅使用磁盤進行持久化。

  • 與其它鍵值數據存儲相比,Redis有一組相對豐富的數據類型。

  • Redis可以將數據複製到任意數量的從機中。

Redis的優點

  • 異常快 - Redis非常快,每秒可執行大約110000次的設置(SET)操作,每秒大約可執行81000次的讀取/獲取(GET)操作。

  • 支持豐富的數據類型 - Redis支持開發人員常用的大多數數據類型,例如列表,集合,排序集和散列等等。這使得Redis很容易被用來解決各種問題,因爲我們知道哪些問題可以更好使用地哪些數據類型來處理解決。

  • 操作具有原子性 - 所有Redis操作都是原子操作,這確保如果兩個客戶端併發訪問,Redis服務器能接收更新的值。

  • 多實用工具 - Redis是一個多實用工具,可用於多種用例,如:緩存,消息隊列(Redis本地支持發佈/訂閱),應用程序中的任何短期數據,例如,web應用程序中的會話,網頁命中計數等。

Redis與其他鍵值存儲系統

  • Redis是鍵值數據庫系統的不同進化路線,它的值可以包含更復雜的數據類型,可在這些數據類型上定義原子操作。

  • Redis是一個內存數據庫,但在磁盤數據庫上是持久的,因此它代表了一個不同的權衡,在這種情況下,在不能大於存儲器(內存)的數據集的限制下實現非常高的寫和讀速度。

  • 內存數據庫的另一個優點是,它與磁盤上的相同數據結構相比,複雜數據結構在內存中存儲表示更容易操作。 因此,Redis可以做很少的內部複雜性。


mysql 和 redis的區別

mysql是持久化存儲,存放在磁盤裏面,檢索的話,會涉及到一定的IO,爲了解決這個瓶頸,於是出現了緩存,比如現在用的最多的 memcached(簡稱mc)。首先,用戶訪問mc,如果未命中,就去訪問mysql,之後像內存和硬盤一樣,把數據複製到mc一部分。redis和mc都是緩存,並且都是駐留在內存中運行的,這大大提升了高數據量web訪問的訪問速度。然而mc只是提供了簡單的數據結構,比如 string存儲;redis卻提供了大量的數據結構,比如string、list、set、hashset、sorted set這些,這使得用戶方便了好多,畢竟封裝了一層實用的功能,同時實現了同樣的效果,當然用redis而慢慢捨棄mc。


內存和硬盤的關係,硬盤放置主體數據用於持久化存儲,而內存則是當前運行的那部分數據,CPU訪問內存而不是磁盤,這大大提升了運行的速度,當然這是基於程序的局部化訪問原理。
推理到redis+mysql,它是內存+磁盤關係的一個映射,mysql放在磁盤,redis放在內存,這樣的話,web應用每次只訪問redis,如果沒有找到的數據,纔去訪問Mysql。









發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章