memcache用法

【window】

http://sishuok.com/forum/blogPost/list/3083.html
http://www.cnblogs.com/freshman0216/archive/2013/01/19/2867994.html

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

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

2>cd C:\memcached(回車)

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

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

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

 


【linux】

參考【http://my.oschina.net/flynewton/blog/9694

下載地址
memcached下載地址:http://www.danga.com/memcached/dist/memcached-1.4.0.tar.gz

Memcache用到了libevent這個庫用於Socket的處理,所以還需要安裝libevent。(如果你的系統已經安裝了libevent,可以不用安裝)

官網:http://www.monkey.org/~provos/libevent/

 

1. 首先下載memcached 和 libevent 包。 Memcached用到了libevent這個庫用於Socket的處理。下面是下載的兩個包文件:
libevent-1.4.14b-stable.tar.gz
memcached-1.4.0.tar.gz

2. 上傳這兩個包到/scmgt/memcache目錄(自建目錄)下。

3. 解壓並安裝:

tar -zxf libevent-1.4.14b-stable.tar.gz
tar -zxf memcached-1.4.0.tar.gz
cd libevent-1.4.14b-stable
#################./configure --prefix=/usr (./configure -prefix=/usr) (--prefix=/gt/lib)
【如果usr沒有權限就     ./configure --prefix=/scmgt/memcache/lib】
make && make install

cd ../ memcached-1.4.0
#################./configure --with-libevent=/usr
【如果usr沒有權限就 ./configure --prefix=/scmgt/memcache/lib --with-libevent=/scmgt/memcache/lib】
make && make install

4. 啓動Memcached

完成上述操作後,memcached被安裝/usr/local/bin/【/scmgt/memcache/lib/bin】目錄下。啓動Memcache的服務器的命令:

/scmgt/memcache/lib/bin/memcached -d -m 1024 -u scmgt -l 10.25.193.16 -p 11211 -c 256 -P /scmgt/memcache/memcached.pid
【xx用法 ./memcached -d -m 2048 -p 11211】
參數說明:
-d 選項是啓動一個守護進程,
-m 是分配給Memcache使用的內存數量,單位是MB,這裏是1GB,
-u 是運行Memcache的用戶,這裏是root,
-l 是監聽的服務器IP地址,如果有多個地址的話,以逗號隔開。這裏指定了服務器的IP地址192.168.13.236,
-p 是設置Memcache監聽的端口,我這裏設置了12001,最好是1024以上的端口,
-c 選項是最大運行的併發連接數,默認是1024,我這裏設置了256,按照你服務器的負載量來設定,
-P 是設置保存Memcache的pid文件,我這裏是保存在 /tmp/chenxinhan/memcached.pid,
5. 結束Memcache進程,執行:

kill `cat /tmp/chenxinhan/memcached.pid`
或者:
ps -aux | grep memcache
然後直接kill掉memcache進程。
6. 可以啓動多個守護進程,但是端口不能一樣。這樣就可以在一臺機器上擁有多個Memcached

7:增加到開機啓動
    # vi /etc/rc.local
        增加:/usr/local/memcacheq/bin/memcacheq  -d -r -uroot -p11212 -H /var/mcq/data -N -R -v -L 1024 -B 1024 > /var/mcq/logs/mq_error.log 2>&1

8. 代碼測試:

import java.util.Date;

import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool;


public class CacheManager {
	private static MemCachedClient mcc = null;
	static {
		//String[] servers ={"127.0.0.1:11211"};
		String[] servers ={"10.25.193.16:11211"};
	    //負載權重
        Integer[] weights = {100};
        //創建一個實例對象SockIOPool,設置mcc參數
        SockIOPool pool = SockIOPool.getInstance();   
        pool.setServers( servers );      
        pool.setWeights( weights );  
        
        //設置初始連接數、最小和最大連接數以及最大處理時間
        pool.setInitConn( 100 );      
        pool.setMinConn( 100 );      
        pool.setMaxConn( 500 ); 
        pool.setMaxIdle( 1000 * 60 * 60 * 6 );  //6小時    
        //設置主線程的睡眠時間       
        pool.setMaintSleep( 30 );				
        pool.setNagle( false );      
        pool.setSocketTO( 3000 );   
        pool.setSocketConnectTO( 0 );      
        pool.initialize();
        //!!!注意:如果是我們自己的對象存放,最好重寫序列化方法,不用使用默認。
		mcc = new MemCachedClient(); 
		
		//壓縮設置,超過指定大小(單位爲K)的數據都會被壓縮
       // mcc.setCompressEnable(true);
       // mcc.setCompressThreshold(64*1024);
		
        //使用代碼
//        String key="id00001";
//        boolean r = mcc.set(key,"succe2ss", new Date(10 * 60 * 1000));//10分鐘
//        System.out.println("SET "+ r);
//
//        System.out.println(mcc.get(key));
//        System.out.println(mcc.get(key));
	}
	
	public CacheManager(){
		
	}
	
	public static MemCachedClient getMemCachedClient(){
		return mcc;
	}
	
	public boolean set(String key,Object obj){
		return mcc.set(key, obj);
	}
	
	public boolean set(String key,Object obj,Date date){
		return mcc.set(key, obj,date);
	}
	
	public Object get(String key){
		return mcc.get(key);
	}
	
	public boolean add(String key,Object obj){
		return mcc.add(key, obj);
	}
	
	public static void main(String[] args) {
		if(args!=null && args.length==1 && args[0].equals("0"))
			CacheManager.getMemCachedClient().set("11", "22");
		
		System.out.println(CacheManager.getMemCachedClient().get("11"));
	}
}


 


參考
http://afterglow.iteye.com/blog/705110

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章