摘要:和其實是一個東西,只是中要是用的擴展不一樣年左右有人豐富的用法和性能,編寫了一個是獨立第三方,才有了用法也有了很大的改進比如添加了批量獲取鍵值下只能安裝擴展并不存在所以中只能使用不能使用類打開一個到服務器的持久化連接連接不會在腳本執行結
Memcache和Memcached 其實是一個東西,只是php中要是用的擴展不一樣, 2009年左右有人豐富memcache的用法和性能,編寫了一個libmemcached是獨立第三方client library,才有了memcached ,用法也有了很大的改進比如添加了 getMulti() 批量獲取鍵值
windows下只能安裝php_memcache.dll 擴展并不存在 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); // 打開一個到服務器的持久化連接 , 連接不會在腳本執行結束后或者close()被調用后關閉
$memcache->addServer("123.57.210.55", 11211,$persistent,$weight); // 向連接池中添加一個memcache服務器 $persistent 是否持久化連接 $weight 控制桶的數量提升被選中的權重 $timeout 表示連續持續時間
$memcache->set("name", "TK"); // 默認存儲不壓縮 不過期 , 其中字符串和數值直接存儲,其他類型序列化后存儲 set其實是add方法和replace方法集合
$memcache->set("email", "julylovin@163.com",MEMCACHE_COMPRESSED,5); // MEMCACHE_COMPRESSED設置存儲是否壓縮 , 5表示5秒后過期但是最大只能設置2592000秒(30天) 如果設置為0 表示永不過期, 可以設置將來的時間戳
$memcache->set("info",array("age"=>"26","salary"=>"1000")); // 可以直接存儲數組,redis中存儲需要手動serialize()序列化
$memcache->add("counter", "10", MEMCACHE_COMPRESSED, 0); //如果鍵值存在會返回false , 如果不存在, 和set方法一樣,生成一個counter的key并賦值10
$memcache->replace ("counter", "10"); //如果鍵值不存在會返回false , 如果存在, 替換counter的值為10
$memcache->increment("counter", 3); // 首先將元素當前值轉換成數值然后減去value 操作counter鍵值+3 若鍵不存在 則返回false 不能用于壓縮的鍵值操作,否則get鍵會失敗
$memcache->decrement("counter", 3); // 操作counter鍵值-3 , 若鍵不存在 則返回false
$memcache->delete("counter", 3); // 操作刪除鍵counter , 3表示3秒內刪除,默認是0即立即刪除
$memcache->flush(); //flush()立即使所有已經存在的元素失效
$memcache->getExtendedStats (); // 返回一個二維關聯數據的服務器統計信息。數組的key由host:port方式組成
$memcache->getServerStatus ("127.0.0.1"); // 獲取返回一個服務器的在線/離線狀態 0表示離線 非0在線
$memcache->getStats(); // 獲取服務器統計信息
$memcache->getVersion(); // 返回服務器版本信息
$memcache->setCompressThreshold ($threshold, $min_saving); // 開啟大值自動壓縮 $threshold設置壓縮閥值 2000字節 ,即字節數大于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); 已經通過addServer 配置過服務器 使用setServerParams 重新設置配置信息
此次練習我是在linux上安裝了phpstorm,linux平臺開發配置看我的其他文章
$memcached = new Memcached(); // 必須安裝memcached擴展 不會安裝看我的相關文章
#server_key名詞解釋# #當臺服務IP和端口完全連通好之后,構成一個hash環,$server_key才會生效 #$server_key 只是為了存儲的key打個標記 比如有三臺 memcache服務器 (A B C ) , 指定 server_key "master-a" "master-b" "master-c" 分別存儲 會員 訂單 日志 等等
$memcached->addServer("192.168.206.128",11211); // 連接服務器
$memcached->setOption(Memcached::OPT_COMPRESSION, false); //配置存儲不壓縮,壓縮value不利于遞增遞減
$memcached->setOption(Memcached::OPT_LIBKETAMA_COMPATIBLE, true); //
$memcached->addServers(array( //添加多臺服務器分布式 array("192.168.206.128", 11311, 20), array("192.168.206.128", 11411, 30) ));
$memcached->flush(1); //1秒內清除所有元素
$memcached->set("name","TK"); $memcached->setByKey("server_master_db","mage","28"); # 指定 server_key server_master_db 存儲鍵mage $memcached->setMulti(array("salary"=>"3000","email"=>"julylovin@163.com")); // 存儲多個元素 $memcached->setMultiByKey("server_master_db", array("salary"=>"3000","email"=>"julylovin@163.com")); // "server_master_db"服務器 存儲多個元素
$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-") ; #向一個已存在的元素前面追加數據 $memcached->prependByKey("server_master_db","name","pre-") ; # 使用server_key自由的將key映射到指定服務器 向一個已存在的元素前面追加數據
$memcached->get("name"); $memcached->get("name",null,$cas); # 第2參數指定緩存回掉函數 ,不指定傳null # 如果元素被找到,并且返回變量 $cas 內部是通過引用變量回傳的 $memcached->getByKey("server_master_db","mname"); # 從特定的服務器檢索元素
$memcached->getAllKeys(); // bug 我一致返回是false
$memcached->cas($cas, "name", "TangKang"); #要與$memcached->get("name",null,$cas) 方法搭配用 才可以拿到 $cas變量 #它僅在當前客戶端最后一次取值后,該key 對應的值沒有被其他客戶端修改的情況下, 才能夠將值寫入 #這是Memcached擴展比Memcache擴展一個非常重要的優勢 在這樣一個系統級(Memcache自身提供)的沖突檢測機制(樂觀鎖)下, 我們才能保證高并發下的數據安全 $memcached->casByKey($cas,"server_master_db", "name", "TangKang");
$memcached->increment("age","1"); #增加數值元素的值 如果元素的值不是數值類型,將其作為0處理 $memcached->incrementByKey("server_master_db","age","1"); # 用于識別儲存和讀取值的服務器
$memcached->decrement("age","1"); #減少數值元素的值 如果元素的值不是數值類型,將其作為0處理 $memcached->decrementByKey("server_master_db","age","1"); # 用于識別儲存和讀取值的服務器
$memcached->getDelayed(array("name", "age"), true, null); # 請求多個元素, 如果with_cas設置為true,會同時請求每個元素的CAS標記 指定一個result callback來替代明確的抓取結果 $memcached->getDelayedByKey("server_master_db",array("name", "age"), true, null);
$memcached->fetch(); # 搭配 $memcached->getDelayed()使用, 從最后一次請求中抓取下一個結果 $memcached->fetchAll(); #抓取最后一次請求的結果集中剩余的所有結果
$memcached->getMulti(array("name", "age")); #檢索多個元素 $memcached->getMultiByKey("server_master_db",array("mname", "mage")); # 從特定服務器檢索多個元素 # 與 $this->memcached->fetchAll() 搭配使用
$memcached->getOption(Memcached::OPT_COMPRESSION); # 獲取Memcached的選項值
$memcached->getResultCode() ; # 返回最后一次操作的結果代碼 Memcached::RES_NOTSTORED $memcached->getResultMessage() ; # 返回最后一次操作的結果描述消息
$memcached->getServerByKey("server_master_db") ; # 獲取一個key所映射的服務器信息 $memcached->getServerList() ; # 獲取服務器池中的服務器列表 $memcached->getStats() ; # 獲取服務器池的統計信息 $memcached->getVersion() ; # 獲取服務器池中所有服務器的版本信息
$memcached->isPersistent() ; #判斷當前連接是否是長連接
$memcached->replace("name","pre-julylovin") ; #set()類似,但是如果 服務端不存在key, 操作將失敗 $memcached->replaceByKey("server_master_db","name","pre-julylovin") ; #setBykey()類似,但是如果 服務端不存在key, 操作將失敗
$memcached->resetServerList() ; //清楚服務器池信息
$memcached->setOption(Memcached::OPT_PREFIX_KEY, "widgets") ; #設置一個memcached選項 $memcached->setOptions(array()) ; #設置一個memcached選項
$memcached->setSaslAuthData($username , $password ) ; #setSaslAuthData 方法不存在
$memcached->touch("name", 10) ; #設置鍵name 10秒后過期(只適用30天之內的秒數) ,30天以后請設置時間戳 $memcached->touchByKey("server_master_db","name",10) ;
$memcached->delete("age",10); #10秒(秒數/時間戳)內刪除一個元素 這個鍵已經存在刪除隊列 該鍵對應的get、add、replace命令都不可用,直到刪除 $memcached->deleteByKey("server_master_db","age"); $memcached->deleteMulti(array("age","name")); #傳入array刪除多個key $memcached->deleteMultiByKey("server_master_db",array("age","name"));
$memcached->quit(); # 關閉所有打開的鏈接
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/61682.html
摘要:和其實是一個東西,只是中要是用的擴展不一樣年左右有人豐富的用法和性能,編寫了一個是獨立第三方,才有了用法也有了很大的改進比如添加了批量獲取鍵值下只能安裝擴展并不存在所以中只能使用不能使用類打開一個到服務器的持久化連接連接不會在腳本執行結 Memcache和Memcached 其實是一個東西,只是php中要是用的擴展不一樣, 2009年左右有人豐富memcache的用法和性能,編寫了一個...
摘要:類型操作是最基本的類型,而且類型是二進制安全的。意思是的可以包含任何數據。的阻塞版本,這個版本有第三個參數用于設置阻塞時間即如果源為空,那么可以阻塞監聽的時間,如果有元素了則執行操作。 String 類型操作 string是redis最基本的類型,而且string類型是二進制安全的。意思是redis的string可以包含任何數據。比如jpg圖片或者序列化的對象 $redis->set...
摘要:以下正文的部分內容來自程序員面試筆試寶典書籍,如果轉載請保留出處一什么是是一個開源免費高性能的分布式對象緩存系統,它基于一個存儲鍵值對的來存儲數據到內存中。預告面試常考內容之和將于本周三更新。 你好,是我琉憶。繼上周(2019.2-11至2-15)發布的PHP面試??純热葜嫦驅ο髮n}后,發布的第二個專題,感謝你的閱讀。本周(2019.2-18至2-22)的文章內容點為以下幾點,更新時...
摘要:以下正文的部分內容來自程序員面試筆試寶典書籍,如果轉載請保留出處一什么是是一個開源免費高性能的分布式對象緩存系統,它基于一個存儲鍵值對的來存儲數據到內存中。預告面試常考內容之和將于本周三更新。 你好,是我琉憶。繼上周(2019.2-11至2-15)發布的PHP面試??純热葜嫦驅ο髮n}后,發布的第二個專題,感謝你的閱讀。本周(2019.2-18至2-22)的文章內容點為以下幾點,更新時...
閱讀 3014·2021-11-16 11:42
閱讀 3651·2021-09-08 09:36
閱讀 950·2019-08-30 12:52
閱讀 2481·2019-08-29 14:12
閱讀 769·2019-08-29 13:53
閱讀 3583·2019-08-29 12:16
閱讀 644·2019-08-29 12:12
閱讀 2469·2019-08-29 11:16