導航:首頁 > 文件管理 > memcached配置文件

memcached配置文件

發布時間:2024-03-31 04:11:34

⑴ 我的memcached為什麼不能存復雜對象

下文簡單介紹了memcached類的應用示例,具有一定的參考價值,感興趣的小夥伴們可以參考一下。 一、memcached 簡介 在很多場合,我們都會聽到 memcached 這個名字,但很多同學只是聽過,並沒有用過或實際了解過,只知道它是一個很不錯的東東。這里簡單介紹一下,memcached 是高效、快速的分布式內存對象緩存系統,主要用於加速 WEB 動態應用程序。 二、memcached 安裝 首先是下載 memcached 了,目前最新版本是 1.1.12,直接從官方網站即可下載到 memcached-1.1.12.tar.gz。除此之外,memcached 用到了 libevent,我下載的是 libevent-1.1a.tar.gz。 接下來是分別將 libevent-1.1a.tar.gz 和 memcached-1.1.12.tar.gz 解開包、編譯、安裝: # tar -xzf libevent-1.1a.tar.gz # cd libevent-1.1a # ./configure --prefix=/usr # make # make install # cd .. # tar -xzf memcached-1.1.12.tar.gz # cd memcached-1.1.12 # ./configure --prefix=/usr # make # make install 安裝完成之後,memcached 應該在 /usr/bin/memcached。 三、運行 memcached 守護程序 運行 memcached 守護程序很簡單,只需一個命令行即可,不需要修改任何配置文件(也沒有配置文件給你修改): /usr/bin/memcached -d -m 128 -l 192.168.1.1 -p 11211 -u httpd 參數解釋: -d 以守護程序(daemon)方式運行 memcached; -m 設置 memcached 可以使用的內存大小,單位為 M; -l 設置監聽的 IP 地址,如果是本機的話,通常可以不設置此參數; -p 設置監聽的埠,默認為 11211,所以也可以不設置此參數; -u 指定用戶,芹滲如果當前為 root 的話,需要使用此參數指定用戶。 當然,還有其它參數可以用,man memcached 一下就可以看到了。 四、memcached 的工作原理 首先 memcached 是以守護程序方式運行於一個或多個伺服器中,隨時接受喊芹客戶端的連接操作,客戶端可以由各種語言編寫,目前已知的客戶端 API 包括 Perl/PHP/Python/Ruby/Java/C#/C 等等。PHP 等客戶端在與 memcached 服務建立連接之後,接下來的事情就是存取對象了,每個被存取的對象都有一個唯一的標識符 key,存取操作均通過這個 key 進行,保存到 memcached 中的對象實際上是放置內存中的,嫌滲脊並不是保存在 cache 文件中的,這也是為什麼 memcached 能夠如此高效快速的原因。注意,這些對象並不是持久的,服務停止之後,里邊的數據就會丟失。 五、PHP 如何作為 memcached 客戶端 有兩種方法可以使 PHP 作為 memcached 客戶端,調用 memcached 的服務進行對象存取操作。 第一種,PHP 有一個叫做 memcache 的擴展,Linux 下編譯時需要帶上 –enable-memcache[=DIR] 選項,Window 下則在 php.ini 中去掉 php_memcache.dll 前邊的注釋符,使其可用。 除此之外,還有一種方法,可以避開擴展、重新編譯所帶來的麻煩,那就是直接使用 php-memcached-client。 本文選用第二種方式,雖然效率會比擴展庫稍差一些,但問題不大。 六、PHP memcached 應用示例 首先 下載 memcached-client.php,在下載了 memcached-client.php 之後,就可以通過這個文件中的類「memcached」對 memcached 服務進行操作了。其實代碼調用非常簡單,主要會用到的方法有 add()、get()、replace() 和 delete(),方法說明如下: add ($key, $val, $exp = 0) 往 memcached 中寫入對象,$key 是對象的唯一標識符,$val 是寫入的對象數據,$exp 為過期時間,單位為秒,默認為不限時間; get ($key) 從 memcached 中獲取對象數據,通過對象的唯一標識符 $key 獲取; replace ($key, $value, $exp=0) 使用 $value 替換 memcached 中標識符為 $key 的對象內容,參數與 add() 方法一樣,只有 $key 對象存在的情況下才會起作用; delete ($key, $time = 0) 刪除 memcached 中標識符為 $key 的對象,$time 為可選參數,表示刪除之前需要等待多長時間。 下面是一段簡單的測試代碼,代碼中對標識符為 'mykey' 的對象數據進行存取操作: <?php // 包含 memcached 類文件 require_once('memcached-client.php'); // 選項設置 $options = array( 'servers' => array('192.168.1.1:11211'), //memcached 服務的地址、埠,可用多個數組元素表示多個 memcached 服務 'debug' => true, //是否打開 debug 'compress_threshold' => 10240, //超過多少位元組的數據時進行壓縮 'persistant' => false //是否使用持久連接 ); // 創建 memcached 對象實例 $mc = new memcached($options); // 設置此腳本使用的唯一標識符 $key = 'mykey'; // 往 memcached 中寫入對象 $mc->add($key, 'some random strings'); $val = $mc->get($key); echo "n".str_pad('$mc->add() ', 60, '_')."n"; var_mp($val); // 替換已寫入的對象數據值 $mc->replace($key, array('some'=>'haha', 'array'=>'xxx')); $val = $mc->get($key); echo "n".str_pad('$mc->replace() ', 60, '_')."n"; var_mp($val); // 刪除 memcached 中的對象 $mc->delete($key); $val = $mc->get($key); echo "n".str_pad('$mc->delete() ', 60, '_')."n"; var_mp($val); ?> 是不是很簡單,在實際應用中,通常會把資料庫查詢的結果集保存到 memcached 中,下次訪問時直接從 memcached 中獲取,而不再做資料庫查詢操作,這樣可以在很大程度上減輕資料庫的負擔。通常會將 SQL 語句 md5() 之後的值作為唯一標識符 key。下邊是一個利用 memcached 來緩存資料庫查詢結果集的示例(此代碼片段緊接上邊的示例代碼): <?php $sql = 'SELECT * FROM users'; $key = md5($sql); //memcached 對象標識符 { // 在 memcached 中未獲取到緩存數據,則使用資料庫查詢獲取記錄集。 echo "n".str_pad('Read datas from MySQL.', 60, '_')."n"; $conn = mysql_connect('localhost', 'test', 'test'); mysql_select_db('test'); $result = mysql_query($sql); while ($row = mysql_fetch_object($result)) $datas[] = $row; // 將資料庫中獲取到的結果集數據保存到 memcached 中,以供下次訪問時使用。 $mc->add($key, $datas); { echo "n".str_pad('Read datas from memcached.', 60, '_')."n"; } var_mp($datas); ?> 可以看出,使用 memcached 之後,可以減少資料庫連接、查詢操作,資料庫負載下來了,腳本的運行速度也提高了。 之前我曾經寫過一篇名為《PHP 實現多伺服器共享 SESSION 數據》文章,文中的 SESSION 是使用資料庫保存的,在並發訪問量大的時候,伺服器的負載會很大,經常會超出 MySQL 最大連接數,利用 memcached,我們可以很好地解決這個問題,工作原理如下: 用戶訪問網頁時,查看 memcached 中是否有當前用戶的 SESSION 數據,使用 session_id() 作為唯一標識符;如果數據存在,則直接返回,如果不存在,再進行資料庫連接,獲取 SESSION 數據,並將此數據保存到 memcached 中,供下次使用; 當前的 PHP 運行結束(或使用了 session_write_close())時,會調用 My_Sess::write() 方法,將數據寫入資料庫,這樣的話,每次仍然會有資料庫操作,對於這個方法,也需要進行優化。使用一個全局變數,記錄用戶進入頁面時的 SESSION 數據,然後在 write() 方法內比較此數據與想要寫入的 SESSION 數據是否相同,不同才進行資料庫連接、寫入資料庫,同時將 memcached 中對應的對象刪除,如果相同的話,則表示 SESSION 數據未改變,那麼就可以不做任何操作,直接返回了; 那麼用戶 SESSION 過期時間怎麼解決呢?記得 memcached 的 add() 方法有個過期時間參數 $exp 嗎?把這個參數值設置成小於 SESSION 最大存活時間即可。另外別忘了給那些一直在線的用戶延續 SESSION 時長,這個可以在 write() 方法中解決,通過判斷時間,符合條件則更新資料庫數據。 以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

⑵ 如何修改memcache內存大小

將memcache伺服器安裝包解壓到C:\memcached文件夾後,使用cmd命令窗口安裝。

1>開始>運行:CMD(確定)

2>cd C:\memcached(回車)

3>memcached -d install(回車 這步執行安裝)

4>memcached -d start(回車 這步執行啟動memcache伺服器,默認分配64M內存,使用11211埠)

此時memcache伺服器已經可以正常使用了。

由於32位系統只能處理4G內存的定址,所以在大於4G內存使用PAE的32位伺服器上可以運行2-3個進程,並在不同埠進行監聽。

又如:memcached -d -m 10 -u root -l 192.168.105.73 -p 12000 -c 256 -P /tmp/memcached.pid

[plain] view plain
-d選項是啟動一個守護進程,
-m是分配給Memcache使用的內存數量,單位是MB,我這里是10MB,
-u是運行Memcache的用戶,我這里是root,
-l是監聽的伺服器IP地址,如果有多個地址的話,我這里指定了伺服器的IP地址192.168.105.73 ,
-p是設置Memcache監聽的埠,我這里設置了12000,最好是1024以上的埠,
-c選項是最大運行的並發連接數,默認是1024,我這里設置了256,按照你伺服器的負載量來設定,
-P是設置保存Memcache的pid文件,我這里是保存在 /tmp/memcached.pid

memcache伺服器安全:

Memcache伺服器端都是直接通過客戶端連接後直接操作,沒有任何的驗證過程,這樣如果伺服器是直接暴露在互聯網上的話是比較危險,輕則數據泄露被其他無關人員查看,重則伺服器被入侵,況且裡面可能存在一些我們未知的bug或者是緩沖區溢出的情況,這些都是我們未知的,所以危險性是可以預見的。為了安全起見,做兩點建議,能夠稍微的防止黑客的入侵或者數據的泄露。

現在就關於修改memcache伺服器配置的問題說明如下:

1>用內網ip的方式提供web應用伺服器調用,不允許直接通過外網調用,如將memcache伺服器放在192.168.1.55的伺服器上

2>修改埠,如改為11200

3>分配內存,如分配1024M(1G內存)

方法如下:
1>開始>運行:regedit(回車)

2>在注冊表中找到:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\memcached Server

3>默認的ImagePath鍵的值是:"c:\memcached\memcached.exe" -d runservice,改為:"c:\memcached\memcached.exe" -d runservice -m 512 -p 11200 -l 192.168.1.55(確定,關閉注冊表)

4>我的電腦(右鍵)>管理>服務 找到memcache的服務,重新啟動一次即可生效。
可以使用PHP寫的 MemAdmin 來監控memcahce運行狀態
原文地址:http://blog.csdn.NET/leiyonglin/article/details/694

⑶ 濡備綍灝哖HP session淇℃伅緙撳瓨鍒癿emcached閲岄潰

涓銆佸満鏅浠嬬粛

鐢ㄦ埛鍦ㄥ埄鐢≒HP鎼寤虹綉絝欐椂錛屼細鎶婁竴浜涗俊鎮瀛樻斁鍦$_SESSION鍏ㄥ矓鍙橀噺閲岋紝鍙浠ュ緢鏂逛究鐨勫瓨鍙栥傚湪PHP鐨剗ni閰嶇疆鏂囦歡閲岄潰鎻愪緵浜哰Session]鐩稿叧閰嶇疆錛屽彲浠ユ敮鎸佸皢淇℃伅瀛樺埌鏂囦歡鎴杕emcached鏈嶅姟鍣ㄩ噷闈銆傜敱閰嶇疆欏箂ession.save_handler = memcached鍐沖畾銆傚ぇ澶氭暟鍦烘櫙錛岃session鏁版嵁騫朵笉闇瑕佹寔涔呭寲錛屼笖涓轟簡鎻愬崌緗戠珯鎬ц兘錛屼細閫夋嫨灝唖ession淇℃伅緙撳瓨鍒癿emcached閲岄潰銆

浜屻侀棶棰

鐜板湪闂棰樻潵浜嗭紝宸茬煡闃塊噷浜慜CS鏄瀹炵幇浜嗘爣鍑唌emcached鍗忚鐨勭紦瀛橈紝鐢ㄦ埛涓鏂歸潰涓轟簡鍑忓皯鏈嶅姟鍣ㄥ唴瀛樺崰鐢錛屼竴鏂歸潰鍑忓皯瀵筸emcached鐨勭淮鎶わ紝甯屾湜灝唖ession鐨勫瓨鍌ㄤ粠鑷寤虹殑memcached榪佺Щ鍒癘CS涓婇潰錛屼笖涓嶅笇鏈涙敼鍐欎唬鐮併傚垏鎹㈣繃紼嬩腑閬囧埌浜嗛棶棰橈紝鍥犳ゆ湁浜嗚繖綃囨枃絝狅紝甯屾湜鑳藉府鍒板ぇ瀹躲

棣栧厛寮勬竻OCS鍜岃嚜寤簃emcached鐨勫尯鍒錛屼粬浠閮藉疄鐜頒簡鏍囧噯memcached鍗忚銆備絾OCS鏄鍒嗗竷寮忛泦緹ょ粺涓瀵瑰栨彁渚涙湇鍔★紝瀹炵幇浜嗚礋杞藉潎琛′笖鏃犲崟鐐規晠闅滐紝鐢ㄦ埛鍙鑷鐢卞姩鎬佸脊鎬ц皟鏁撮厤緗涓旀棤闇閲嶅惎鏈嶅姟銆傛棦鐒舵槸瀵瑰栨彁渚涙湇鍔★紝灝辨湁鐩稿簲鐨勫畨鍏ㄦ満鍒訛紝濡傜櫧鍚嶅崟銆佹祦鎺с佽處鍙峰瘑鐮侀壌鏉冦傝繖閲屽規瘮鑷寤簃emcached錛屾渶閲嶈佺殑鍖哄埆灝辨槸鈥滆處鍙峰瘑鐮侀壌鏉冣濓紝鍥犱負澶у氭暟鐢ㄦ埛鑷寤簃emcached鏄涓嶉渶瑕佽劇疆璐﹀彿瀵嗙爜鐨勶紝璺烵CS姣斿氨灝戜簡SASL閴存潈嫻佺▼銆傞偅涔堢敤鎴峰皢session鐨勫瓨鍌ㄤ粠鑷寤虹殑memcached榪佺Щ鍒癘CS涓婇潰錛屽氨闇瑕佸湪php.ini涓閰嶇疆璐﹀彿瀵嗙爜銆

涓夈佽В鍐

1銆佸湪鑰佺増鏈鐨刾hp memcached鎵╁睍涓鏃犳硶鏀鎸侊紝闇瑕佸崌綰php memcached鎵╁睍鑷2.2.0鐗堟湰銆傞噸鏂版寜鐓ч樋閲屼簯OCS瀹樼綉鏁欑▼http://help.aliyun.com/view/11108324_13703944.html?spm=5176.7150518.1996836753.9.OZnEq0 緙栬瘧鎵╁睍銆傛ラゅ備笅錛

wget http://pecl.php.net/get/memcached-2.2.0.tgz

tar zxvf memcached-2.2.0.tgz

cd memcached-2.2.0

phpize

./configure 鈥搘ith-libmemcached-dir=/usr/local/libmemcached 鈥揺nable-memcached-sasl

make

make install

2銆佹壘鍒板垰鍗囩駭memcached.so錛宻tat鍛戒護紜瀹氫笅鏄鍚︽洿鏂幫紝娉ㄦ剰涓媘odify鏃墮棿

3銆佷慨鏀筽hp.ini閰嶇疆

3.1 session孌

鎵懼埌[Session]孌佃惤錛屼慨鏀瑰瓨鍌ㄥ紩鎿庝負錛

session.save_handler = memcached錛堟敞鎰忔槸甯d鎵╁睍錛

淇鏀瑰瓨鍌ㄥ湴鍧錛屽嵆OCS璁塊棶鍦板潃涓猴細

session.save_path = 鈥渂e6b6b8221cc11e4.m.cnhzalicm10pub001.ocs.aliyuncs.com:11211鈥籌紙娉ㄦ剰甯d鎵╁睍錛屽垯鍓嶉潰涓嶇敤鍔爐cp://錛屼笉甯d鐨勬墿灞曢渶瑕佸姞錛

淇鏀圭紦瀛樺埌memcached鐨刱ey鐨勬椂闂

session.gc_maxlifetime = 1440錛堝崟浣嶆槸縐掞紝寮虹儓寤鴻蹇呴』璁劇疆涓涓鍚堢悊鏃墮棿錛屼互淇濊瘉OCS濮嬬粓鍙緙撳瓨鐑鐐規暟鎹錛

3.2 memcached孌

鍦╬hp.ini鐨勫叏灞孌碉紝寤轟竴涓鍗曠嫭孌佃惤[memcached]錛岀劧鍚庡湪絀虹櫧鍦版柟鍔犲叆涓嬮潰閰嶇疆

[memcached]

memcached.use_sasl = On

memcached.sess_binary = On

memcached.sess_sasl_username = 鈥測our_ocs_name鈥

memcached.sess_sasl_password = 鈥測our_ocs_password鈥

memcached.sess_locking = Off

瀹夎呮ラゅ畬緇擄紝涓婅堪鍏充簬memcached孌靛拰Session孌靛叾浠栨湁鐢ㄥ弬鏁幫紝鍙傝冮摼鎺ュ備笅錛

http://php.net/manual/en/memcached.configuration.php

http://php.net/manual/en/session.configuration.php

鎺ヤ笅鏉ユ槸嫻嬭瘯鏄鍚︾敓鏁堛

鍥涖佹祴璇

鍐欐祴璇曚唬鐮佸備笅session.php

<?php

session_start();

$sn = session_id();

echo 鈥渟ession id:鈥.$sn.鈥\n鈥;

$_SESSION["ocs_key"]=鈥漵ession_value鈥;

echo 鈥渟ession:鈥.$_SESSION["ocs_key"].鈥\n鈥;

?>

杈撳嚭濡備笅錛

session id:ttrct9coa2q62r2sodlq4qf376

session:session_value

嫻嬭瘯浠g爜get.php鍘諱粠OCS鑾峰彇鍒氭墠session.php閫氳繃session鍐欏叆鐨勬暟鎹

<?php

$memc = new Memcached();

$memc->setOption(Memcached::OPT_COMPRESSION, false);

$memc->setOption(Memcached::OPT_BINARY_PROTOCOL, true);

$memc->addServer(鈥渂e6b6b8221cc11e4.m.cnhzalicm10pub001.ocs.aliyuncs.com鈥, 11211);

$memc->setSaslAuthData(鈥測our_ocs_name鈥, 鈥測our_ocs_password鈥);

echo $memc->get(鈥渕emc.sess.key. ttrct9coa2q62r2sodlq4qf376鈥);

/*娉ㄦ剰榪欓噷鐨刱ey鏄鏈夊墠緙鐨勶紝鐢眕hp.ini涓璵emcached.sess_prefix瀛楁靛喅瀹氾紝榛樿ゅ間負鈥渕emc.sess.key.鈥濄傜劧鍚庡啀鎷兼帴涓婇潰鎵撳嚭鏉ョ殑sessionid鈥渢trct9coa2q62r2sodlq4qf376鈥濆嵆鍙銆*/

?>

璇ヤ唬鐮佽緭鍑哄備笅錛

ocs_key|s:13:鈥漵ession_value鈥;

鍗砅HP SESSION宸茬粡鎴愬姛鍐欏叆OCS銆

閱讀全文

與memcached配置文件相關的資料

熱點內容
51虛擬機的文件管理在哪裡 瀏覽:13
win10系統有沒有便簽 瀏覽:722
java引用傳遞和值傳遞 瀏覽:109
oracle下載安裝教程 瀏覽:854
php篩選資料庫 瀏覽:830
怎麼用手機看wlan密碼 瀏覽:745
奧維地圖導入的文件在哪裡 瀏覽:364
sdltrados2014教程 瀏覽:43
培訓制度文件在哪裡找 瀏覽:601
勒索病毒防疫工具 瀏覽:861
win10c不能打開 瀏覽:375
xfplay影音先鋒蘋果版 瀏覽:597
兩個文件打開兩個word 瀏覽:921
蘋果6s桌面圖標輕微抖動 瀏覽:326
如何刪除手機中看不見的臨時文件 瀏覽:469
安卓412原生鎖屏apk 瀏覽:464
書加加緩存文件在哪裡 瀏覽:635
dock是word文件嗎 瀏覽:267
社保公司新辦去哪個網站下載資料 瀏覽:640
三維標注數據怎麼填寫 瀏覽:765

友情鏈接