成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Memcache/Memcached的PHP操作手冊(cè)(純手稿版)

hedzr / 3448人閱讀

摘要:和其實(shí)是一個(gè)東西,只是中要是用的擴(kuò)展不一樣年左右有人豐富的用法和性能,編寫了一個(gè)是獨(dú)立第三方,才有了用法也有了很大的改進(jìn)比如添加了批量獲取鍵值下只能安裝擴(kuò)展并不存在所以中只能使用不能使用類打開(kāi)一個(gè)到服務(wù)器的持久化連接連接不會(huì)在腳本執(zhí)行結(jié)

Memcache和Memcached 其實(shí)是一個(gè)東西,只是php中要是用的擴(kuò)展不一樣, 2009年左右有人豐富memcache的用法和性能,編寫了一個(gè)libmemcached是獨(dú)立第三方client library,才有了memcached ,用法也有了很大的改進(jìn)比如添加了 getMulti() 批量獲取鍵值

windows下只能安裝php_memcache.dll 擴(kuò)展并不存在 php_memcached.dll, 所以windows 中只能使用$mcd = new Memcache() 不能使用new Memcached()


Memcache 類
$memcache = new Memcache;
$memcache->connect("127.0.0.1", 11211);
$memcache->pconnec("127.0.0.1", 11211); 
// 打開(kāi)一個(gè)到服務(wù)器的持久化連接 , 連接不會(huì)在腳本執(zhí)行結(jié)束后或者close()被調(diào)用后關(guān)閉
$memcache->addServer("123.57.210.55", 11211,$persistent,$weight); 
// 向連接池中添加一個(gè)memcache服務(wù)器 $persistent 是否持久化連接 $weight 
   控制桶的數(shù)量提升被選中的權(quán)重 $timeout 表示連續(xù)持續(xù)時(shí)間
$memcache->set("name", "TK"); 
// 默認(rèn)存儲(chǔ)不壓縮 不過(guò)期 , 其中字符串和數(shù)值直接存儲(chǔ),其他類型序列化后存儲(chǔ) 
   set其實(shí)是add方法和replace方法集合
$memcache->set("email", "[email protected]",MEMCACHE_COMPRESSED,5);
// MEMCACHE_COMPRESSED設(shè)置存儲(chǔ)是否壓縮 , 5表示5秒后過(guò)期但是最大只能設(shè)置2592000秒(30天)
   如果設(shè)置為0 表示永不過(guò)期, 可以設(shè)置將來(lái)的時(shí)間戳
$memcache->set("info",array("age"=>"26","salary"=>"1000"));  
// 可以直接存儲(chǔ)數(shù)組,redis中存儲(chǔ)需要手動(dòng)serialize()序列化
$memcache->add("counter", "10", MEMCACHE_COMPRESSED, 0); 
//如果鍵值存在會(huì)返回false , 如果不存在, 和set方法一樣,生成一個(gè)counter的key并賦值10
$memcache->replace ("counter", "10");
 //如果鍵值不存在會(huì)返回false , 如果存在, 替換counter的值為10
$memcache->increment("counter", 3); 
// 首先將元素當(dāng)前值轉(zhuǎn)換成數(shù)值然后減去value 操作counter鍵值+3 
   若鍵不存在 則返回false 不能用于壓縮的鍵值操作,否則get鍵會(huì)失敗
$memcache->decrement("counter", 3); // 操作counter鍵值-3 , 若鍵不存在 則返回false
$memcache->delete("counter", 3); // 操作刪除鍵counter , 3表示3秒內(nèi)刪除,默認(rèn)是0即立即刪除
$memcache->flush(); //flush()立即使所有已經(jīng)存在的元素失效
$memcache->getExtendedStats (); 
// 返回一個(gè)二維關(guān)聯(lián)數(shù)據(jù)的服務(wù)器統(tǒng)計(jì)信息。數(shù)組的key由host:port方式組成
$memcache->getServerStatus ("127.0.0.1"); // 獲取返回一個(gè)服務(wù)器的在線/離線狀態(tài)  0表示離線 非0在線
$memcache->getStats(); // 獲取服務(wù)器統(tǒng)計(jì)信息
$memcache->getVersion(); // 返回服務(wù)器版本信息
$memcache->setCompressThreshold ($threshold, $min_saving); 
//  開(kāi)啟大值自動(dòng)壓縮   $threshold設(shè)置壓縮閥值 2000字節(jié) ,即字節(jié)數(shù)大于2K 就壓縮
    $min_saving  0--1之間  0.2表示壓縮20%
$memcache->setServerParams("memcache_host", 11211, 1, 15, true, "_callback_memcache_failure"); 
// $memcache->addServer("memcache_host", 11211, false, 1, 1, -1, false);
   已經(jīng)通過(guò)addServer 配置過(guò)服務(wù)器 使用setServerParams 重新設(shè)置配置信息

Memcached 類

此次練習(xí)我是在linux上安裝了phpstorm,linux平臺(tái)開(kāi)發(fā)配置看我的其他文章

$memcached = new Memcached(); //   必須安裝memcached擴(kuò)展 不會(huì)安裝看我的相關(guān)文章
#server_key名詞解釋#
#當(dāng)臺(tái)服務(wù)IP和端口完全連通好之后,構(gòu)成一個(gè)hash環(huán),$server_key才會(huì)生效 
#$server_key 只是為了存儲(chǔ)的key打個(gè)標(biāo)記 比如有三臺(tái) memcache服務(wù)器 (A B C ) , 指定 server_key 
"master-a" "master-b" "master-c" 分別存儲(chǔ) 會(huì)員 訂單 日志 等等
$memcached->addServer("192.168.206.128",11211); // 連接服務(wù)器
$memcached->setOption(Memcached::OPT_COMPRESSION, false); 
//配置存儲(chǔ)不壓縮,壓縮value不利于遞增遞減
$memcached->setOption(Memcached::OPT_LIBKETAMA_COMPATIBLE, true);
// 
$memcached->addServers(array( //添加多臺(tái)服務(wù)器分布式
    array("192.168.206.128", 11311, 20),
    array("192.168.206.128", 11411, 30)
));
$memcached->flush(1); //1秒內(nèi)清除所有元素
$memcached->set("name","TK");

$memcached->setByKey("server_master_db","mage","28");
# 指定 server_key server_master_db 存儲(chǔ)鍵mage


$memcached->setMulti(array("salary"=>"3000","email"=>"[email protected]"));
// 存儲(chǔ)多個(gè)元素

$memcached->setMultiByKey("server_master_db",
                    array("salary"=>"3000","email"=>"[email protected]")); 
//  "server_master_db"服務(wù)器 存儲(chǔ)多個(gè)元素
$memcached->add("name","TK"); // 鍵name不存在添加value 否則添加失敗

$memcached->addByKey("server_master_db","mname","MTK");
$memcached->append("key","-816"); // 鍵key的value后追加字符串 -816

$memcached->appendByKey("server_master_db","mname","-923");
$memcached->prepend("name","pre-") ; #向一個(gè)已存在的元素前面追加數(shù)據(jù)

$memcached->prependByKey("server_master_db","name","pre-") ; 
# 使用server_key自由的將key映射到指定服務(wù)器 向一個(gè)已存在的元素前面追加數(shù)據(jù)
$memcached->get("name");

$memcached->get("name",null,$cas); 
# 第2參數(shù)指定緩存回掉函數(shù) ,不指定傳null 
# 如果元素被找到,并且返回變量 $cas 內(nèi)部是通過(guò)引用變量回傳的

$memcached->getByKey("server_master_db","mname");  # 從特定的服務(wù)器檢索元素
$memcached->getAllKeys(); // bug 我一致返回是false 
$memcached->cas($cas, "name", "TangKang");
#要與$memcached->get("name",null,$cas) 方法搭配用 才可以拿到 $cas變量
#它僅在當(dāng)前客戶端最后一次取值后,該key 對(duì)應(yīng)的值沒(méi)有被其他客戶端修改的情況下, 才能夠?qū)⒅祵懭?#這是Memcached擴(kuò)展比Memcache擴(kuò)展一個(gè)非常重要的優(yōu)勢(shì)
 在這樣一個(gè)系統(tǒng)級(jí)(Memcache自身提供)的沖突檢測(cè)機(jī)制(樂(lè)觀鎖)下, 我們才能保證高并發(fā)下的數(shù)據(jù)安全

$memcached->casByKey($cas,"server_master_db", "name", "TangKang");
$memcached->increment("age","1"); 
#增加數(shù)值元素的值  如果元素的值不是數(shù)值類型,將其作為0處理

$memcached->incrementByKey("server_master_db","age","1"); 
# 用于識(shí)別儲(chǔ)存和讀取值的服務(wù)器
$memcached->decrement("age","1");
#減少數(shù)值元素的值  如果元素的值不是數(shù)值類型,將其作為0處理

$memcached->decrementByKey("server_master_db","age","1");
# 用于識(shí)別儲(chǔ)存和讀取值的服務(wù)器
$memcached->getDelayed(array("name", "age"), true, null); 
# 請(qǐng)求多個(gè)元素, 如果with_cas設(shè)置為true,會(huì)同時(shí)請(qǐng)求每個(gè)元素的CAS標(biāo)記 
  指定一個(gè)result callback來(lái)替代明確的抓取結(jié)果

$memcached->getDelayedByKey("server_master_db",array("name", "age"), true, null);  
$memcached->fetch(); 
# 搭配 $memcached->getDelayed()使用, 從最后一次請(qǐng)求中抓取下一個(gè)結(jié)果

$memcached->fetchAll();
#抓取最后一次請(qǐng)求的結(jié)果集中剩余的所有結(jié)果
$memcached->getMulti(array("name", "age")); #檢索多個(gè)元素

$memcached->getMultiByKey("server_master_db",array("mname", "mage")); 
# 從特定服務(wù)器檢索多個(gè)元素
# 與 $this->memcached->fetchAll() 搭配使用
$memcached->getOption(Memcached::OPT_COMPRESSION); 
# 獲取Memcached的選項(xiàng)值
$memcached->getResultCode() ; 
# 返回最后一次操作的結(jié)果代碼   Memcached::RES_NOTSTORED

$memcached->getResultMessage() ; 
# 返回最后一次操作的結(jié)果描述消息
$memcached->getServerByKey("server_master_db") ; # 獲取一個(gè)key所映射的服務(wù)器信息

$memcached->getServerList() ; #  獲取服務(wù)器池中的服務(wù)器列表

$memcached->getStats() ; #  獲取服務(wù)器池的統(tǒng)計(jì)信息

$memcached->getVersion() ;  #  獲取服務(wù)器池中所有服務(wù)器的版本信息
$memcached->isPersistent() ; #判斷當(dāng)前連接是否是長(zhǎng)連接
$memcached->replace("name","pre-julylovin") ; 
#set()類似,但是如果 服務(wù)端不存在key, 操作將失敗

$memcached->replaceByKey("server_master_db","name","pre-julylovin") ; 
#setBykey()類似,但是如果 服務(wù)端不存在key, 操作將失敗
$memcached->resetServerList() ; //清楚服務(wù)器池信息
$memcached->setOption(Memcached::OPT_PREFIX_KEY, "widgets") ; 
#設(shè)置一個(gè)memcached選項(xiàng)

$memcached->setOptions(array()) ; 
#設(shè)置一個(gè)memcached選項(xiàng)
$memcached->setSaslAuthData($username , $password ) ; 
#setSaslAuthData 方法不存在
$memcached->touch("name", 10) ; 
#設(shè)置鍵name 10秒后過(guò)期(只適用30天之內(nèi)的秒數(shù)) ,30天以后請(qǐng)?jiān)O(shè)置時(shí)間戳

$memcached->touchByKey("server_master_db","name",10) ;
$memcached->delete("age",10); 
#10秒(秒數(shù)/時(shí)間戳)內(nèi)刪除一個(gè)元素  這個(gè)鍵已經(jīng)存在刪除隊(duì)列 
 該鍵對(duì)應(yīng)的get、add、replace命令都不可用,直到刪除

$memcached->deleteByKey("server_master_db","age");

$memcached->deleteMulti(array("age","name")); #傳入array刪除多個(gè)key 

$memcached->deleteMultiByKey("server_master_db",array("age","name"));
$memcached->quit(); # 關(guān)閉所有打開(kāi)的鏈接

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/61682.html

相關(guān)文章

  • Memcache/MemcachedPHP操作手冊(cè)手稿

    摘要:和其實(shí)是一個(gè)東西,只是中要是用的擴(kuò)展不一樣年左右有人豐富的用法和性能,編寫了一個(gè)是獨(dú)立第三方,才有了用法也有了很大的改進(jìn)比如添加了批量獲取鍵值下只能安裝擴(kuò)展并不存在所以中只能使用不能使用類打開(kāi)一個(gè)到服務(wù)器的持久化連接連接不會(huì)在腳本執(zhí)行結(jié) Memcache和Memcached 其實(shí)是一個(gè)東西,只是php中要是用的擴(kuò)展不一樣, 2009年左右有人豐富memcache的用法和性能,編寫了一個(gè)...

    BlackHole1 評(píng)論0 收藏0
  • RedisPHP操作手冊(cè)手稿

    摘要:類型操作是最基本的類型,而且類型是二進(jìn)制安全的。意思是的可以包含任何數(shù)據(jù)。的阻塞版本,這個(gè)版本有第三個(gè)參數(shù)用于設(shè)置阻塞時(shí)間即如果源為空,那么可以阻塞監(jiān)聽(tīng)的時(shí)間,如果有元素了則執(zhí)行操作。 String 類型操作 string是redis最基本的類型,而且string類型是二進(jìn)制安全的。意思是redis的string可以包含任何數(shù)據(jù)。比如jpg圖片或者序列化的對(duì)象 $redis->set...

    dingding199389 評(píng)論0 收藏0
  • PHP面試??純?nèi)容之Memcache和Redis(1)

    摘要:以下正文的部分內(nèi)容來(lái)自程序員面試筆試寶典書籍,如果轉(zhuǎn)載請(qǐng)保留出處一什么是是一個(gè)開(kāi)源免費(fèi)高性能的分布式對(duì)象緩存系統(tǒng),它基于一個(gè)存儲(chǔ)鍵值對(duì)的來(lái)存儲(chǔ)數(shù)據(jù)到內(nèi)存中。預(yù)告面試??純?nèi)容之和將于本周三更新。 你好,是我琉憶。繼上周(2019.2-11至2-15)發(fā)布的PHP面試常考內(nèi)容之面向?qū)ο髮n}后,發(fā)布的第二個(gè)專題,感謝你的閱讀。本周(2019.2-18至2-22)的文章內(nèi)容點(diǎn)為以下幾點(diǎn),更新時(shí)...

    wenyiweb 評(píng)論0 收藏0
  • PHP面試??純?nèi)容之Memcache和Redis(1)

    摘要:以下正文的部分內(nèi)容來(lái)自程序員面試筆試寶典書籍,如果轉(zhuǎn)載請(qǐng)保留出處一什么是是一個(gè)開(kāi)源免費(fèi)高性能的分布式對(duì)象緩存系統(tǒng),它基于一個(gè)存儲(chǔ)鍵值對(duì)的來(lái)存儲(chǔ)數(shù)據(jù)到內(nèi)存中。預(yù)告面試??純?nèi)容之和將于本周三更新。 你好,是我琉憶。繼上周(2019.2-11至2-15)發(fā)布的PHP面試??純?nèi)容之面向?qū)ο髮n}后,發(fā)布的第二個(gè)專題,感謝你的閱讀。本周(2019.2-18至2-22)的文章內(nèi)容點(diǎn)為以下幾點(diǎn),更新時(shí)...

    nanfeiyan 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

hedzr

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<