php鏈接memcache操作




設置值

set key 壓縮標識 有效期 長度
set name 0 60 5
hello

壓縮標識:用於告訴memcached服務器是否壓所后存儲數據,目的是為了節省磁盤空間,壓所和解壓縮會消耗時間
有效期:用於key在什么時間失效,設置方式有兩種,時間間隔和時間戳,區分時間間隔和時間戳的方法:
臨界值:308243600=2592000(30天)
長度:值的大小(字節為單位)
鍵:由字母數字下划線標識符組成,長度不要大於250字節,在實際開發中,建議使用前綴
值:需要緩存的數據內容,字符串,在實際開發中,配合序列化和反序列化使用,單個值不能超過1M

add age 0 0 2 僅添加,如果key已經存在,則添加失敗
replace 僅替換,如果key不不存在的,則替換失敗
delete key 刪除指定的key緩存
fash all 清空所有緩存

stats 獲取當前memcached服務器的狀態

hits:命中率:

misses:未命中率:
關注它的原因就是要查看緩存內容是否有效,有否被獲取到。如果命中率太低了,就證明緩存的數據有問題。需要把緩存數據整理好。重新存放。緩存命中率有70%就可以了。
提升命中率,應該講常用的獲取頻繁的數據放在存儲緩存中,實際開發中,緩存需要預熱處理。

stats items 命令用於顯示各個slab中item的數目和存儲時長(最后一次訪問距離現在的秒數)
stats cachedump slabs_id limit_num
slabs_id: 由stats items返回的結果(STAT items后面的數字)決定的
limit_num:返回的紀錄數,0表示返回所有記錄

內存的限制:32位下最大的設置為2Gs
如果有30G的數據要緩存,一般也不會單實例裝30G,一般建議 開啟多個實例(可以在不同的機器或者同台機器上的不同端口)

標量類型

整型

<?php
    $mem=memcache_connect('127.0.0.1',11211);
    $int=123;
    $mem->set('int',$int,0,0);
    $value=$mem->get('int');
    halt($value);
    //結果
    string "123"

字符串

<?php
    $mem=memcache_connect('127.0.0.1',11211);
    $str="123";
    $mem->set('str',$str,0,0);
    $value=$mem->get('str');
    halt($value);
    //結果
    string "123"

布爾

<?php
    $mem=memcache_connect('127.0.0.1',11211);
    $true=true
    $mem->set('true',$true,0,0);
    $value=$mem->get('true');
    halt($value);
    //結果
    string "1"
    布爾值是真,隱式轉化1
    
    //返回假的情況
    string ""
    返回的是空字符串

非標量類型

數組

<?php
    $mem=memcache_connect('127.0.0.1',11211);
    $str=[1,2,3,4];
    $mem->set('str',$str,0,0);
    $value=$mem->get('str');
    halt($value);
    // 瀏覽器返回結果
    array [1,2,3,4]
    //服務器數據
    //get arr
    //value arr 1 46
序列化與反序列化:
PHP在存儲數據的時候,通過php_memcache.dll擴展實現的序列化。在反序列化的時候,也是我們的擴展幫助我們實現的序列化。

對象

<?php
class A{
private $name='chen';

function getName(){
    return $this->name;
    }
}

$mem=memcache_connect('127.0.0.1',11211);
$obj=new A();
$mem->set('obj',$obj,0,0),;
$value=$mem->get('obj');
halt($value);
echo $value->getName();
?>

//結果:
obj...
對象在存儲的時候,也是會被序列化的。同樣也是和數組是一樣的。是在擴展端實現的序列化與反序列化。

NULL

返回結果是null

資源類型
同樣也是在序列化之后存儲到服務器的。取出來之后也實現了反序列化。但是這樣值不再可用了。因為資源類型被序列化的時候,不能被完整描述。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM