NoSQL&Redis
1.介紹NoSQL
NoSQL(Not Only SQL):不僅僅是SQL,是一項全新的數據庫理念,泛指非關系型數據庫,原來我們所使用的MySQL、Oracle、Microsoft SQL Server等都是關系行數據庫。那麽我們為什麽需要NoSQL呢?隨著互聯網web2.0網站興起,非關系型數據庫發展迅速,傳統的關系型數據庫應付 web2.0 網站,特別是超大規模和高並發的 SNS 類型的 web2.0 動態網站已經力不從心,尤其是對數據庫高並發讀寫的需求、對海量數據庫的高效率存儲和訪問的需求、對數據庫的高可擴展和高可用性的需求大大增加,使得NoSQL成為互聯網的新寵兒~
1.1主流NoSQL產品
Tolyo Cabinet/Tyrant、Redis、Voldemort、Berkeley DB、Cassandra、HBase、Riak、CounchDB、MongoDB、Neo4J、InfoGrid、Infinite Graph
- 鍵值(key-value)存儲數據庫
- 相關產品:Tolyo Cabinet/Tyrant、Redis、Voldemort、Berkeley DB
- 典型應用:內容緩存,主要用於處理大量數據的高訪問負載
- 數據模型:一系列鍵值對
- 優勢:快速查詢
- 劣勢:存儲的數據缺少結構化
- 列存儲數據庫
- 相關產品:Cassandra、HBase、Riak
- 典型應用:分布式的文件系統
- 數據模型:以列簇式存儲,將同一列數據存在一起
- 優勢:查找速度快,可擴展性強,更容易進行分布式擴展
- 劣勢:功能相對局限
- 文檔型數據庫
- 相關產品:CounchDB、MongoDB
- 典型應用:Web應用
- 數據模型:一系列鍵值對
- 優勢:數據結構要求不嚴格
- 劣勢:查詢性能不高,而且缺乏統一的查詢語法
- 圖形數據庫
- 相關數據庫:Neo4J、InfoGrid、Infinite Graph
- 典型應用:社交網絡
- 數據模型:圖結構
- 優勢:利用圖結構相關算法
- 劣勢:需要對整個圖做計算才能得出結果,不容易做分布式的集群方案
1.2NoSQL特點
1.易擴展
- NoSQL數據庫種類繁多,但是一個共同特點都是去掉關系數據庫的關系型特點。數據之間沒有關系,也就無形中在架構層面上帶來了可擴展的能力
2.大數據量,高性能
- NoSQL數據庫都具有非常高的讀寫性能,尤其是在大數據量下,同樣表現優秀。得益於它的無關性,數據庫的結構簡單
3.靈活的數據模型
- NoSQL 無需事先為存儲的數據建立字段,隨時可以存儲自定義的數據格式。而在關系數據庫裏,增刪字段是一件非常麻煩的事情。如果非常大數據量的表,增加字段簡直就是一個噩夢。
4.高可用
- NoSQL 在不太影響性能的情況,就可以方便的實現高可用的框架。比如 Cassandra,HBase模型,通過復制模型也能實現高可用
2.什麽是Redis
Redis 是用C語言開發的一個開源的高性能的鍵值對(key-value)數據庫,因為是C語言開發所以需要在 Linux 下使用 gcc 來編譯本次講解操作都在 Linux下 因為在 Windows操作下不能保證很高的性能,目前 Redis 支持的鍵值數據類型如下:
- 字符串類型
- 散列類型
- 列表類型
- 集合類型
- 有序集合類型
這裏不在介紹 Redis 的安裝過程 大致過程需要搭建虛擬機環境,安裝 Linux 系統,通過 SSH 將安裝包傳輸進去 ,在進行解壓,使用 make 命令進行編譯 ,使用make PREFIX=/安裝路徑 /redis install 進行安裝 因為直接 /安裝路徑/redis/bin/redis-server 啟動執行程序會在前臺,我們可以copy配置文件 redis.conf 到你/安裝路徑/redis下,修改 redis.conf 配置文件 daemonize 修改為 yes 就可變成後端啟動
2.1Redis使用說明
- 使用後端模式啟動
- Redis -> ./bin/redis-server redis.conf
- 查看 Redis端口默認6379
- ps -ef | grep -i redis
- 強制Redis 停止
- kill -9 端口號
- 正常停止
- cd /安裝路徑/redis
- ./bin/redis-cli shutdown
- 連接客戶端
- ./bin/redis-cli
- 輸入數據 set username haha
- 輸出數據 get username
- 刪除數據 del username
- 查看當前庫中所有 key 值 keys *
NoSQL&Redis