PHP操作Memcache

簡單的基於文本行的協議:

 

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

 

解決之道:

防火牆


 

發佈了28 篇原創文章 · 獲贊 30 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章