Redis是 NoSQL(非關系型數據庫) 類型數據庫,在NoSQL 數據庫中數據之間是無聯系的,無關系的。數據的結構是松散的,可變的。
(1) 大數據量,高性能
NoSQL 數據庫都具有非常高的讀寫性能,尤其在大數據量下,同樣表現優秀。這得益于它的無關系性,數據庫的結構簡單。關系型數據庫(例如 MySQL)使用查詢緩存。這種查詢緩存在更新數據后,緩存就是失效了。在頻繁的數據讀寫交互應用中。 緩存的性能不高。NoSQL 的緩存性能要高的多。
(2) 靈活的數據模型
NoSQL 無需事先為要存儲的數據建立字段,隨時可以存儲自定義的數據格式。而在關系數據庫里,增刪字段是一件非常麻煩的事情。如果是非常大數據量的表,增加字段簡直就是一個噩夢。尤其在快速變化的市場環境中,用戶的需求總是在不斷變化的。
(3) 高可用
NoSQL 在不太影響性能的情況,就可以方便的實現高可用的架構。
NoSQL 能很好的解決關系型數據庫擴展性差的問題。彌補了關系數據(比如 MySQL) 在某些方面的不足,在某些方面能極大的節省開發成本和維護成本。
MySQL 和 NoSQL 都有各自的特點和使用的應用場景,兩者結合使用。讓關系數據庫關注在關系上,NoSQL 關注在存儲上。
(4) 低成本
這是大多數分布式數據庫共有的特點,因為主要都是開源軟件,沒有昂貴的 License 成本
(2) 不支持標準的 SQL,沒有公認的 NoSQL 標準
(3) 沒有關系型數據庫的約束,大多數也沒有索引的概念
(4) 沒有事務,不能依靠事務實現 ACID.
(5) 沒有豐富的數據類型(數值,日期,字符,二進制,大文本等)
(1)無法應對每秒上萬次的讀寫請求,無法處理大量集中的高并發操作。關系型數據的是 IO密集的應用。硬盤 IO 也變為性能瓶頸
(2)表中存儲記錄數量有限,橫向可擴展能力有限,一張表最大二百多列。縱向數據可承受能力也是有限的,一張表的數據到達百萬級,讀寫的速度就會逐漸的下降。面對海量數據, 必須使用主從復制,分庫分表。這樣的系統架構是難以維護的。
大數據查詢 SQL 效率極低,數據量到達一定程度時,查詢時間會呈指數級別增長
(3)無法簡單地通過增加硬件、服務節點來提高系統性能。數據整個存儲在一個數據庫中的。多個服務器沒有很好的解決辦法,來復制這些數據。
(4)關系型數據庫大多是收費的,對硬件的要求較高。軟件和硬件的成本花費比重較大。
綜上所述,目前在互聯網領域海量數據的項目中NoSQL應用非常廣泛。