一、什麼是NoSQLredis
NoSQL(統稱),泛指非關係型的數據庫,NoSQL即Not-Only SQL,它能夠做爲關係型數據庫的良好補充。算法
二、NoSQL數據庫的四大分類以下:數據庫
鍵值(Key-Value)存儲數據庫
相關產品: Tokyo Cabinet/Tyrant、Redis、Voldemort、Berkeley DB
典型應用: 內容緩存,主要用於處理大量數據的高訪問負載。
數據模型: 一系列鍵值對
優點: 快速查詢
劣勢: 存儲的數據缺乏結構化緩存
列存儲數據庫
相關產品:Cassandra, HBase, Riak
典型應用:分佈式的文件系統
數據模型:以列簇式存儲,將同一列數據存在一塊兒
優點:查找速度快,可擴展性強,更容易進行分佈式擴展
劣勢:功能相對侷限
文檔型數據庫服務器
相關產品:CouchDB、MongoDB
典型應用:Web應用(與Key-Value相似,Value是結構化的)
數據模型: 一系列鍵值對
優點:數據結構要求不嚴格
劣勢: 查詢性能不高,並且缺少統一的查詢語法網絡
圖形(Graph)數據庫
相關數據庫:Neo4J、InfoGrid、Infinite Graph
典型應用:社交網絡
數據模型:圖結構
優點:利用圖結構相關算法。
劣勢:須要對整個圖作計算才能得出結果,不容易作分佈式的集羣方案。session
三、什麼是redis數據結構
redis是將數據存放到內存中,因爲內容存取速度快因此redis被普遍應用在互聯網項目中,
redis有點:存取速度快,官方稱讀取速度會達到30萬次每秒,寫速度在10萬次每秒最有,具體限制於硬件.
缺點:對持久化支持不夠良好,
因此redis通常不做爲數據的主數據庫存儲,通常配合傳統的關係型數據庫使用.併發
Redis是用C語言開發的一個開源的高性能鍵值對(key-value)數據庫。它經過提供多種鍵值數據類型來適應不一樣場景下的存儲需求,分佈式
目前爲止Redis支持的鍵值數據類型以下:
字符串類型(String)
散列類型(Hash) redis中使用的是雙向循環鏈表來實現的list,在redis中更像棧
列表類型(List) 通常應用於將redis做爲分佈式緩存,存儲數據庫中的數據對象
集合類型(Set) set中數據是無序的而且不容許重複
有序集合類型。(zset) redis會根據分數自動排序,這裏可使用在學生成績排序,或者是手機應用商店流行軟件排名等需求中
四、redis的應用場景
1)、適合高併發、數據量大的狀況下
2)、分佈式緩存
3)、分佈式session
五、Redis 持久化
rdb:能夠設置間隔多長時間保存一次(Redis不用任何配置默認的持久化方案,在redis同目錄下會產生個後綴名(rdb)的文件,持久化數據就放到該文件中)
優勢:讓redis的數據存取速度變快
缺點:服務器斷電時會丟失部分數據(數據的完整性得不到保證)
aof:能夠設置實時保存(和rdb同樣,持久化數據放到該後綴(aof)文件中)
優勢:持久化良好,能包裝數據的完整性
缺點:大大下降了redis系統的存取速度
六、主從複製
一、從服務器和主服務器 互相認識對方 主服務器 知道 誰是個人從服務器
二、而後主服務器將rdb該文件發送到從服務器中
1)、當主從服務器互相都知曉的時候,
從服務器會一直不間斷的對主服務器發ping命令(意思就是問主服務器你還活着嗎?)
主服務器會回覆pang命令(意思:我還活着)
當從服務器發送ping命令 主服務器沒任何反應的時候 那麼證實主服務器掛了 從服務器上位
從服務器上位以後 不允許進行CRUD操做 那樣會致使數據的不一樣步
三、當主服務器進行CRUD操做,將該命令發送到從服務器中,從服務器執行一樣命令