b/s: 基於瀏覽器和伺服器架構 web程式
c/s: QQ SVN client用戶端+ 伺服器
簡單的基於文本行的協議:
redis
memcache
區別:
都是儲存資料的,memcache直接儲存到記憶體中,redis 儲存到記憶體中,關閉之後儲存到硬碟中,memcache 重啟電腦,關閉服務都會造成資料丟失
(1)儲存在記憶體中
(2)重啟電腦,重啟服務全部資料都消失
(3)LRU演算法,根據最近使用的變數,將長時間沒使用的變數刪除
PHP如何操作memcache
1,php載入擴充php_memcache.dll 擴充
序列化
還原序列化
memcache可以儲存的資料:字串,數值,數組,對象
當我們獲得memcache中儲存的對象的時候,需要提供這個類的定義,否則,提示不知道是哪個類的對象
memcahe 和 redis: redis還可以儲存 hash, 資料結構
2,memcached client操作
C/S 通過用戶端串連服務端
添加php_memcache.dll,但是我們沒有許可權修改 php的設定檔
但是還想使用記憶體memcache
還可以使用client操作
通過socket技術,
mysql查詢
查詢的英文 進行排序
中文-----sphinx 中文檢索引擎
關閉 memcache擴充
使用socket技術完成php對memcache的CRUD操作
dll 封裝的函數類庫,通過這些開闢記憶體空間,儲存資料
那麼可不可以,自己寫函數和dll封裝的一樣?
思路就是將dll中c語言開發的類庫,轉化成php語言
網路界的活雷鋒,共用了php類檔案
如果出現notice層級的錯誤,修改php error_reporting + E_ALL+NOTICE
Memcache的生存周期:
重啟memcached、重啟作業系統會導致全部資料消失。另外,內容容量達到指定值之後,就基於LRU(LeastRecently Used)演算法自動刪除不使用的緩衝。
如果設定expire為0,表示永遠不到期,直到機器重啟或服務重啟
欲加之罪何患無辭
將session 的資料儲存到memcache中
session的資料預設情況下,儲存在file 檔案中
但是我們可以通過修改php的配置,讓他儲存在其他地方
1,讓memcache來處理session
2,
寸但是如何獲得session變數的時候,不再是name屬性,而是通過session_id來儲存的
session_id
瀏覽器訪問 伺服器的時候,伺服器給瀏覽器分配session_id 然後在通過session_id找 對應的值
如果sessaion儲存的是對象的話,獲得的時候,累的資訊會丟失
但是現在還有問題:
如果沒有許可權修改php的配置怎麼辦?
ini_set() 可以在php檔案中,設定php的一些配置
安全問題:
現在誰都可以訪問我的memcache
解決之道:
防火牆