MySQL&Redis數據庫
MySQL&MongoDBjson
Redis&Memcached緩存
Memcached使用預分配的內存池的方式,使用slab和大小不一樣的chunk來管理內存,Item根據大小選擇合適的chunk存儲,內存池的方式能夠省去申請/釋放內存的開銷,而且能減少內存碎片產生,但這種方式也會帶來必定程度上的空間浪費。服務器
Redis使用現場申請內存的方式來存儲數據,而且不多使用free-list等方式來優化內存分配,會在必定程度上存在內存碎片,Redis根據存儲命令參數,會把帶過時時間的數據單獨存放在一塊兒,並把它們稱爲臨時數據,非臨時數據是永遠不會被剔除的,即使物理內存不夠,致使swap也不會剔除任何非臨時數據(但會嘗試剔除部分臨時數據),因此Redis更適合做爲存儲而不是cache。網絡
Redis提供了一個「事務」的概念,Redis的事務僅僅只是將一組操做按順序進行操做,在這之間不會插入任何其餘命令,從而保證數據的一致性,可是這種方式很容易形成操做阻塞。Memcached提供了相似於樂觀鎖同樣的cas操做,會快速的返回處理成功或失敗,不會對其餘數據操做產生影響。