PHP操作Memcache(二)

如何使用php程序操作我們的memcached服務 curd.

步驟,準備工作.

(1) 把 php_memcache.dll 文件拷貝 php的ext 下

☞ 不同版本的php 所使用的 php_memcache.dll 的版本不一樣

(2) 修改php.ini文件,加載 php_memcache.dll (該文件就是封裝了一堆函數)

;加載php_memcache.dll 文件

extension=php_memcache.dll

(3) 重新啓動apache

(4) 我們寫程序來完成curd操作.

這裏寫圖片描述


這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述

可以用 telnet 查看是否成功

取對象時,要注意:在前面聲明要取的類。跟session一樣

這裏寫圖片描述

這裏寫圖片描述
這裏寫圖片描述

這裏寫圖片描述

序列化保存數據的結構和信息;
而 json 保存鍵值對.

這裏寫圖片描述

細節: 在我們添加數據的時候,如果 
bool Memcache::add ( string $key , mixed $var [, int $flag [, int $expire ]] )
如果報 expire 設爲0 表示,永不過期.(只要memcache不重新啓動,就永遠在mem中)
exprie 直接給的是秒數,則最大 30*3600*24
如果你希望保持時間超過30  time()+天數*3600*24 即可

這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述


mem1.php

<?php

//創建一個 memcache 對象實例
$mem = new Memcache();

if ($mem->connect('127.0.0.1',11211)){
    echo '連接成功<br/>';
}else{
    echo '連接失敗<br/>';
}

//增加
//1.增加一個字串
/*if ($mem->add('key1','shanghai',MEMCACHE_COMPRESSED,30)){
    echo '添加成功<br/>';
}else{
    echo '添加失敗<br/>';
}*/

//2.添加數字
/*if ($mem->add('key1',100,MEMCACHE_COMPRESSED,30)){
    echo '添加成功<br/>';
}else{
    echo '添加失敗<br/>';
}*/

//3.添加數組
// 在添加數組時,根據需要,希望序列化後在存入。 serialize
//根據需要,也可以 json_encode()
/*$arr = array('aaa','bbb','ccc');
if ($mem->add('key1',$arr,MEMCACHE_COMPRESSED,30)){
    echo '添加成功<br/>';
}else{
    echo '添加失敗<br/>';
}*/



//4.添加對象
/*class Dog
{
    public $name;
    public $age;
    public function __construct($name,$age)
    {
        $this->name = $name;
        $this->age = $age;
    }
}

$do1 = new Dog('小米',18);
if ($mem->add('key1',$do1,MEMCACHE_COMPRESSED,30)){
    echo '添加對象成功<br/>';
}else{
    echo '添加對象失敗<br/>';
}*/

//5.添加 null 和 布爾值
/*if ($mem->add('key1',null,MEMCACHE_COMPRESSED,30)){
    echo '添加null成功<br/>';
}else{
    echo '添加null失敗<br/>';
}*/
/*if ($mem->add('key1',false,MEMCACHE_COMPRESSED,30)){
    echo '添加布爾值成功<br/>';
}else{
    echo '添加布爾值失敗<br/>';
}*/

//6.資源類型
/*$key1 = mysql_connect('localhost','root','123456');
if(!$key1){
    die('連接數據庫失敗');
}

if ($mem->add('key1',false,MEMCACHE_COMPRESSED,30)){
    echo '添加資源成功<br/>';
}else{
    echo '添加資源值失敗<br/>';
}*/

//查詢
/*$val = $mem->get('key1');
//如果是資源的話,即使保存成功,取出來也是 0,所以 memcache 不支持存放資源
var_dump($val);
echo '$val=',$val,'<br/>';*/

//修改

/*if ($mem->replace('key1','hello',MEMCACHE_COMPRESSED,60)){
    echo 'replace Ok <br/>';
}else{
    echo 'replace no Ok <br/>';
}*/


//刪除
/*if ($mem->delete('key1')){
    echo 'key1 刪除<br/>';
}else{
    echo 'key1 不存在';
}*/

if ($mem->add('key4',100,MEMCACHE_COMPRESSED,time() + 31*3600*24)){
    echo '添加成功<br/>';
}else{
    echo '添加失敗<br/>';
}

if ($mem->get('key4')){
    echo '取到數據' . $mem->get('key3') . '<br/>';
}else{
    echo '沒取到數據';
}

mem2.php

<?php

//在這個文件去 memcache 對象
$mem = new Memcache();

class Dog
{
    public $name;
    public $age;
    public function __construct($name,$age)
    {
        $this->name = $name;
        $this->age = $age;
    }
}

if ($mem->connect('127.0.0.1',11211)){
    echo '連接成功<br/>';
}else{
    echo '連接失敗<br/>';
}

//在另外文件取對象

$dog = $mem->get('key1');
var_dump($dog);

index.php

<?php

class Dog
{
    public $name;
    public $age;

    public function __construct($name,$age)
    {
        $this->name = $name;
        $this->age = $age;
    }
}

$dog2 = new Dog('小哈',18);
//把這個對象保存到磁盤 -> serialize ,字符串可以在網上傳輸

//傳統方法
//file_put_contents('./dog.log',$dog2); //保存不了,是空的

//序列化
file_put_contents('./dog.log',serialize($dog2)); //可以保存,取出時,還可以反序列化

echo '保存ok<br/>';

$str = file_get_contents('./dog.log');
var_dump($str);
var_dump(unserialize($str));



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