發(fā)布時間:2018-08-29 瀏覽次數:4014
Mysql數據庫
類型:關系型數據庫
持久化方式:
無論數據還是索引都存放在硬盤中。到要使用的時候才交換到內存中。能夠處理遠超過內存總量的數據。
效率:
MySQL存放在硬盤,在速度上肯定沒有Redis快,但是存放的數據量要多的多
功能與應用:
功能強大,傳統(tǒng)的關系型數據庫,應用非常廣泛,基本可以滿足所有存儲數據的需求,滿足所有應用程序等,例如論壇,個人博客,門戶咨詢等web網站以及OA等其他應用。
優(yōu)勢:
1. 它使用的核心線程是完全多線程,支持多處理器。
2. 有多種列類型:1、2、3、4、和8字節(jié)長度自有符號/無符號整數、FLOAT、DOUBLE、CHAR、VARCHAR、TEXT、BLOB、DATE、TIME、DATETIME、 TIMESTAMP、YEAR、和ENUM類型。
3. 它通過一個高度優(yōu)化的類庫實現SQL函數庫并像他們能達到的一樣快速,通常在查詢初始化后不該有任何內存分配。沒有內存漏洞。
4. 全面支持SQL的GROUP BY和ORDER BY子句,支持聚合函數(COUNT()、COUNT(DISTINCT)、AVG()、STD()、SUM()、MAX()和MIN())。你可以在同一查詢中混來自不同數據庫的表。
5. 支持ANSI SQL的LEFT 0UTER JOIN和ODBC。
6. 所有列都有缺省值。你可以用INSERT插入一個表列的子集,那些沒用明確給定值的列設置為他們的決省值。
7. MySQL可以工作在不同的平臺上。支持C、C++、Java、Perl、PHP、Python和TCL API。
Redis數據庫
類型:非關系型數據庫
持久化方式:
redis所有數據都是放在內存中的,持久化是使用RDB方式或者aof方式
效率:
Redis的數據存放在內存,所以速度快但是會受到內存空間限制
功能與應用:
Redis是一個K-V數據庫,同時還支持List/Hash/Set/Sorted Set等幾個簡單數據結構,它沒有二維表的概念,不能做非常復雜的邏輯查詢,所以只能以這些數據結構為基礎實現功能,通常用來輔助關系型數據庫(如mysql)使網站更快速。因此它只能滿足一些特定應用場景。例如 :緩存,計數器,排行榜,活動促銷,投票排序等
優(yōu)勢:
Redis是一個開源的使用ANSI C語言編寫、遵守BSD協(xié)議、支持網絡、可基于內存亦可持久化的日志型、Key-Value,并提供多種語言的API。
Redis 與其他 key - value 緩存產品有以下特點:
· Redis支持數據的持久化,可以將內存中的數據保持在磁盤中,重啟的時候可以再次加載進行使用。
· Redis不僅僅支持簡單的key-value類型的數據,同時還提供list,set,zset,hash等數據結構的存儲。
· Redis支持數據的備份,即master-slave模式的數據備份。
· 性能極高 – Redis能讀的速度是110000次/s,寫的速度是81000次/s 。
· 豐富的數據類型 – Redis支持二進制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 數據類型操作。
· 原子 – Redis的所有操作都是原子性的,同時Redis還支持對幾個操作全并后的原子性執(zhí)行。
· 豐富的特性 – Redis還支持 publish/subscribe, 通知, key 過期等等特性。
· Redis運行在內存中但是可以持久化到磁盤,所以在對不同數據集進行高速讀寫時需要權衡內存,應為數據量不能大于硬件內存。在內存數據庫方面的另一個優(yōu)點是,相比在磁盤上相同的復雜的數據結構,在內存中操作起來非常簡單,這樣Redis可以做很多內部復雜性很強的事情。同時,在磁盤格式方面他們是緊湊的以追加的方式產生的,因為他們并不需要進行隨機訪問。
總結:
建站時,應首先選擇關系型數據庫(如mysql)做為基礎數據庫,如果想讓網站更快速,再選擇Redis來配合使用。一般Redis不單獨作為建站需要,通常用來配合關系型數據庫(mysql)來滿足特定需求。
Redis與mysql數據同步:
讀:讀redis->如沒有,讀mysql->把mysql數據寫回redis
寫:寫mysql->成功,寫redis