對php中 memcache的詳解

memcahe 是一個分佈式儲存系統,分佈式主要體如今各個服務器之間是沒有聯繫的,主要是經過內存來維護一張hash表,hash表主要是以鍵值對方式存儲的,就是一款cs軟件包.php

keymysql

valuelinux

mystrsql

abc數據庫

myarr安全

Array(aacc);服務器

objectsession

Objectapp


工做原理tcp

Memcache 軟件, memcached

memcached是以守護程序方式運行在一個或者多個服務之中,隨時客服端的操做和鏈接.


關於memcache的安裝

在linux 下面的安裝

  基於libevent事件
        Linux下
        安裝libevent時
            ./configure –with-libevent=/usr
            Make && make install

        安裝memcached
            ./configure –with-libevent=/usr

            Make && make install

           啓動Memcahced –d –m 128 –l 192.168.1.111 –p 11211 –u root
            中止: kill `cat /tmp/memcached.pid`;
            Killall  memcached

   Windows下
            Memcahced.exe  -d  install [uninstall]
            Memcached.exe –d  -m 50 –l 127.0.0.1  -p 11211 start


、Memcached服務器的管理(啓動)
        memcached的基本設置:
-p 監聽的端口
-l 鏈接的IP地址, 默認是本機
-d start 啓動memcached服務
-d restart 重起memcached服務
-d stop|shutdown 關閉正在運行的memcached服務
-d install 安裝memcached服務
-d uninstall 卸載memcached服務
-u 以的身份運行 (僅在以root運行的時候有效)
-m 最大內存使用,單位MB。默認64MB ,最大好像2G
-M 內存耗盡時返回錯誤,而不是刪除項
-c 最大同時鏈接數,默認是1024
-f 塊大小增加因子,默認是1.25
-n 最小分配空間,key+value+flags默認是48
-h 顯示幫助


7、如何遍歷memcache

8、在PHP程序中使用Memcached
    a 在PHP安裝Memcache擴展

        能夠按面向過程方式

        面向對象的方式

    b 在PHP什麼地方使用memcache

        1、 數據庫讀出來的數據(select)使用memcache處理
        
        2、 在會話控制session中使用

    c 實例

9、Memcache的安全(不讓別人訪問)

    1 .內網
    2. 設置放火牆
         Iptables –A INPUT –p tcp –s 192.168.1.111 –dport 11211 –j ACCEPT
         Iptables –A INPUT –p udp –s 192.168.1.111 –dpost 11211 –j ACCEPT
        

安裝. 而後開始 memcached -d start

Command

Description

Example

get

Reads a value

get mykey

set

Set a key unconditionally

set mykey 0 60 5

add

Add a new key

add newkey 0 60 5

replace

Overwrite existing key

replace key 0 60 5

append

Append data to existing key

append key 0 60 15

prepend

Prepend data to existing key

prepend key 0 60 15

incr

Increments numerical key value by given number

incr mykey 2

decr

Decrements numerical key value by given number

decr mykey 5

delete

Deletes an existing key

delete mykey

flush_all

Invalidate specific items immediately

flush_all

Invalidate all items in n seconds

flush_all 900


stats

Prints general statistics

Stats

Prints memory statistics

stats slabs


Prints memory statistics

stats malloc


Print higher level allocation statistics

stats items



stats detail



stats sizes


Resets statistics

stats reset


version

Prints server version.

version

verbosity

Increases log level

verbosity

quit

Terminate telnet session

quit

 

 

 

pid

memcache服務器的進程ID

uptime

服務器已經運行的秒數

time

服務器當前的unix時間戳

version

memcache版本

pointer_size

當前操做系統的指針大小(32位系統通常是32bit)

rusage_user

進程的累計用戶時間

rusage_system

進程的累計系統時間

curr_items

服務器當前存儲的items數量

total_items

從服務器啓動之後存儲的items總數量

bytes

當前服務器存儲items佔用的字節數

curr_connections

當前打開着的鏈接數

total_connections

從服務器啓動之後曾經打開過的鏈接數

connection_structures

服務器分配的鏈接構造數

cmd_get

get命令(獲取)總請求次數

cmd_set

set命令(保存)總請求次數

get_hits

總命中次數

get_misses

總未命中次數

evictions

爲獲取空閒內存而刪除的items數(分配給memcache的空間用滿後須要刪除舊的items來獲得空間分配給新的items)

bytes_read

總讀取字節數(請求字節數)

bytes_written

總髮送字節數(結果字節數)

limit_maxbytes

分配給memcache的內存大小(字節)

threads

當前線程數




pid    memcache服務器的進程ID
uptime    服務器已經運行的秒數
time    服務器當前的unix時間戳
version    memcache版本
pointer_size    當前操做系統的指針大小(32位系統通常是32bit)
rusage_user    進程的累計用戶時間
rusage_system    進程的累計系統時間
curr_items    服務器當前存儲的items數量
total_items    從服務器啓動之後存儲的items總數量
bytes    當前服務器存儲items佔用的字節數
curr_connections    當前打開着的鏈接數
total_connections    從服務器啓動之後曾經打開過的鏈接數
connection_structures    服務器分配的鏈接構造數
cmd_get    get命令(獲取)總請求次數
cmd_set    set命令(保存)總請求次數
get_hits    總命中次數
get_misses    總未命中次數
evictions    爲獲取空閒內存而刪除的items數(分配給memcache的空間用滿後須要刪除舊的items來獲得空間分配給新的items)
bytes_read    總讀取字節數(請求字節數)
bytes_written    總髮送字節數(結果字節數)
limit_maxbytes    分配給memcache的內存大小(字節)
threads    當前線程數


具體能夠參考PHP手冊 「LXXXIV. Memcache Functions」 這章。
  Memcache面向對象的經常使用接口包括:
  Memcache::connect -- 打開一個到Memcache的鏈接
  Memcache::pconnect -- 打開一個到Memcache的長鏈接
  Memcache::close -- 關閉一個Memcache的鏈接
  Memcache::set -- 保存數據到Memcache服務器上
  Memcache::get -- 提取一個保存在Memcache服務器上的數據
  Memcache::replace -- 替換一個已經存在Memcache服務器上的項目(功能相似Memcache::set)
  Memcache::delete -- 從Memcache服務器上刪除一個保存的項目
  Memcache::flush -- 刷新全部Memcache服務器上保存的項目(相似於刪除全部的保存的項目)
  Memcache::getStats -- 獲取當前Memcache服務器運行的狀態
  Memcache::addServer -- 分佈式服務器添加一個服務器

使用 php 操做 memcache 


<?php
    $mem=new Memcache;

    $mem->connect("localhost", 11211);

    /*
     * 注意:
     *     1. 同一個項目安裝兩次,key要有前綴
     *    
     *
     */

    $sql="select * from shops";
    $key=substr(md5($sql), 10, 8);

    $data=$mem->get($key);

    if(!$data){    

        $mysqli=new mysqli("localhost", "root", "123456", "xsphpdb");

        $result=$mysqli->query($sql);

        $data=array();

        while($row=$result->Fetch_assoc()){
            $data[]=$row;
        }

        $result->free();
        $mysqli->close();

        $mem->set($key, $data, MEMCACHE_COMPRESSED, 3600);

        echo $sql;

    }
    echo '<pre>';
    print_r($data);
    echo '</pre>';

    $mem->close();


比較不錯的資料 推薦  http://my.oschina.net/leetiger/blog/201248#OSC_h3_2

相關文章
相關標籤/搜索