摘要:和其實(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 = 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è)置配置信息
此次練習(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
摘要:和其實(shí)是一個(gè)東西,只是中要是用的擴(kuò)展不一樣年左右有人豐富的用法和性能,編寫了一個(gè)是獨(dú)立第三方,才有了用法也有了很大的改進(jìn)比如添加了批量獲取鍵值下只能安裝擴(kuò)展并不存在所以中只能使用不能使用類打開(kāi)一個(gè)到服務(wù)器的持久化連接連接不會(huì)在腳本執(zhí)行結(jié) Memcache和Memcached 其實(shí)是一個(gè)東西,只是php中要是用的擴(kuò)展不一樣, 2009年左右有人豐富memcache的用法和性能,編寫了一個(gè)...
摘要:類型操作是最基本的類型,而且類型是二進(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...
摘要:以下正文的部分內(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í)...
摘要:以下正文的部分內(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í)...
閱讀 3025·2021-11-16 11:42
閱讀 3679·2021-09-08 09:36
閱讀 958·2019-08-30 12:52
閱讀 2494·2019-08-29 14:12
閱讀 784·2019-08-29 13:53
閱讀 3597·2019-08-29 12:16
閱讀 655·2019-08-29 12:12
閱讀 2480·2019-08-29 11:16