客戶端向服務端請求php頁面的過程當中,服務端是可控的。 可控的纔可優化,優化的重點,便是緩存優化。 試想?數據存儲在DB中,訪問DB就要讀取硬盤數據,但若是須要數據的速度>>硬盤最大的讀寫速度, 就會產生IO瓶頸。 那麼,使用內存緩存數據結果集,讓用戶首先讀取緩存,未果則從DB中讀取。 如此,就能提升數據響應的速度,也保護了數據源。 php雖開啓shmop擴展可管理內存,但所能管理的內存大小是有限的。 纔有大爲流行的NOSQL: memcache 高性能的分佈式內存緩存服務器 (分佈式配置:1.有多個memcache服務端;2.開啓php相應擴展,經過addServer()便可實現。底層經過對key的hash取餘來標識服務器,所以代碼實現上,不要改變存取前的服務器的順序,不然可能出現獲取不到值的狀況) redis 高性能的內存緩存服務器 (主從配置:master主服務器執行修改操做,多個slave(只讀)鏈接master,在首次全量複製後,增量更新數據到自身。若是slave斷了,從新鏈接master時,會自動全量複製)
value是以字符串的形式保存的:php
php標量數據類型,保存時會隱式轉換爲字符串; php其餘數據類型, 保存時自動序列化,取出時自動反序列化. //該過程是php的memcache擴展開啓後,底層實現的
注意事項redis
∧緩存
memcache
與redis
,最大區別在於持久化
(即數據可否保存在硬盤上).redis
因其多樣的數據結構,而知足更多的業務需求,但memcache
的讀取速度更快些.服務器
∨數據結構
支持豐富的數據結構(在此先不展開該方面的討論)分佈式
經常使用項:string,hash,list,set,sortedset //redis自己就實現了雙向列表,list還可模擬出隊列,堆棧的數據結構
可持久化:性能
注意事項優化