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
解決之道:
防火牆
memcache使用例項 PHP
首先,判斷 memcache 中是否存在key,如果有則從memcache中取值 如果沒有相應的key,則從去網頁中抓取資料,如果抓取成功,則存入db,寫入memcache並讀取,如果抓取不成功,則直接 mysql 中取值,並將取出來的值放入memcache。include inc common.i...
memcache使用例項 PHP
首先,判斷 memcache 中是否存在key,如果有則從memcache中取值 如果沒有相應的key,則從去網頁中抓取資料,如果抓取成功,則存入db,寫入memcache並讀取,如果抓取不成功,則直接 mysql 中取值,並將取出來的值放入memcache。php view plain copy ...
php操作Memcache示例
例項化 mem new memcache 新建連線 if mem connect 127.0.0.1 11211 增加 1.增加乙個字串 if mem add key1 abc memcache compressed,60 2.增加乙個數字 if mem add key2 100,memcache ...