一、概念:memcached:一个高性能的分布式的内存对象缓存系统,用来分担数据库的压力,通过在内存里维护一个统一的巨大的hash表,能够用来存储各种格式的数据,包括图像、视频、文件及数据库检索的结果等,简单的说就是将数据调到内存中,然后从内存中读取,从而大大提高读取速度。
memcached是以key-value的方式进行数据存储的,key《=250个字符,value<=1M,memcached默认过期时间是30days。
二、Windows下安装:
1、将下载的压缩包解压到某个目录下。
2、输入cmd,打开命令行窗口,转到刚才解压的目录下。
3、输入memcached.exe -d install进行安装(如果提示failed to install or...,解决办法是在C:/Windows/system32目录下找到cmd.exe文件,右击以管理员身份运行便可)
4、安装完后输入memcached -d start启动服务,便可在任务管理器的服务窗口看到memcached。
三、memcached启动参数描述:
-d :启动一个守护进程,
-m:分配给Memcache使用的内存数量,单位是MB,默认是64MB,
-u :运行Memcache的用户
-l :监听的服务器IP地址
-p :设置Memcache监听的端口,默认是11211 注:-p(p为小写)
-c :设置最大并发连接数,默认是1024
-P :设置保存Memcache的pid文件 注:-P(P为大写)
如果要结束Memcache进程,执行:kill cat pid文件路径
四:java操作memecached具体步骤如下:
1、首先引用4个jar包:
commons-pool-1.5.6.jar
java_memcached-release_2.6.6.jar
slf4j-api-1.6.1.jar
slf4j-simple-1.6.1.jar
2、操作代码如下:
1 import com.danga.MemCached.MemCachedClient; 2 import com.danga.MemCached.SockIOPool; 3 import com.keytec.bean.User; 4 5 public class MemcachedTest { 6 7 protected static MemCachedClient mcc = new MemCachedClient(); 8 protected static MemcachedTest mt = new MemcachedTest(); 9 //设置与缓存服务器的连接池 10 static{ 11 //服务器列表及其权重 12 String[] servers = {"127.0.0.1:11211"}; 13 Integer[] weights = {3}; 14 15 //获取socket连接池的实例对象 16 SockIOPool pool = SockIOPool.getInstance(); 17 18 //设置服务器信息 19 pool.setServers(servers); 20 pool.setWeights(weights); 21 22 //设置初始连接数、最小和最大连接数及最大处理时间 23 pool.setInitConn(5); 24 pool.setMinConn(5); 25 pool.setMaxConn(250); 26 pool.setMaxIdle(1000 * 60 * 60 * 6); 27 28 //设置主线程的睡眠时间 29 pool.setMaintSleep(30); 30 31 //设置TCP的参数,连接超时等 32 pool.setNagle(false); 33 pool.setSocketTO(3000); 34 pool.setSocketConnectTO(0); 35 36 //初始化连接池 37 pool.initialize(); 38 39 //压缩设置,超过指定大小(单位为K)的数据都会被压缩 40 // mcc.setCompressEnable(true); 41 // mcc.setCompressThreshold(64 * 1024); 42 } 43 44 protected MemcachedTest(){} 45 46 public static MemcachedTest getInstance(){ 47 return mt; 48 } 49 50 //添加指定的值到缓存中 51 public boolean add(String key,Object value){ 52 return mcc.add(key, value); 53 } 54 55 public boolean add(String key,Object value,Date expiry){ 56 return mcc.add(key, value, expiry); 57 } 58 59 public boolean replace(String key,Object value){ 60 return mcc.replace(key, value); 61 } 62 63 public boolean replace(String key,Object value,Date expiry){ 64 return mcc.replace(key, value, expiry); 65 } 66 67 public Object get(String key){ 68 return mcc.get(key); 69 } 70 71 public static void main(String[] args) { 72 MemcachedTest memCache = MemcachedTest.getInstance(); 73 memCache.add("hello", 123); 74 System.err.println("get value from cache:" + memCache.get("hello")); 75 User user = new User(); 76 user.setUserName("zhangli"); 77 user.setPassword("123"); 78 memCache.add("user", user); 79 User cuser = (User)memCache.get("user"); 80 System.err.println("cached user:" + cuser.getUserName()); 81 cuser.setUserName("cuihongwei"); 82 cuser = (User)memCache.get("user"); 83 System.err.println("cached user:" + cuser.getUserName()); 84 memCache.replace("user", cuser); 85 cuser = (User)memCache.get("user"); 86 System.err.println("cached user:" + cuser.getUserName()); 87 } 88 89 }
注:存放的对象必须被实例化。
原文:http://www.cnblogs.com/zhli/p/3642639.html