membercached安装与部署及应用
来源:互联网 发布:网络教育本科毕业论文 编辑:程序博客网 时间:2024/06/05 06:42
membercached用于高效简单缓存,如果你要做的是简单的缓存(没有非常复杂和数据操作),那么membercached是缓存首选
因为他的缺点是 不能直接遍历key。如果需要直接遍历key,建议用redis
membercached安装部署:
1.下载memcached和libeventcd /tmpwget http://www.danga.com/memcached/dist/memcached-1.2.0.tar.gzwget http://www.monkey.org/~provos/libevent-1.2.tar.gz2.安装libevent:tar zxvf libevent-1.2.tar.gzcd libevent-1.2./configure --prefix=/usrmakemake install (管理员权限sudo make install)(http://blog.csdn.net/big1980/article/details/10155509)3.测试libevent是否安装成功:ls -al /usr/lib | grep libevent(有内容表示成功)4.安装memcached,同时需要安装中指定libevent的安装位置:cd /tmptar zxvf memcached-1.2.0.tar.gzcd memcached-1.2.0./configure --with-libevent=/usrmakemake install (管理员权限sudo make install)如果中间出现报错,请仔细检查错误信息,按照错误信息来配置或者增加相应的库或者路径。安装完成后会把memcached放到 /usr/local/bin/memcached 5.测试是否成功安装memcached:ls -al /usr/local/bin/mem* 启动Memcached服务:1.启动Memcache的服务器端:# /usr/local/bin/memcached -d -m 256 -u root -l 127.0.0.1 -p 12000 -c 256 -P /tmp/memcached.pid(对外网 /usr/local/bin/memcached -d -m 256 -u weblogic -l 0.0.0.0 -p 12000 -c 256 -P /tmp/memcached.pid)-d选项是启动一个守护进程-m是分配给Memcache使用的内存数量,单位是MB-u是运行Memcache的用户,我这里是root-l是监听的服务器IP地址-p是设置Memcache监听的端口-c选项是最大运行的并发连接数,默认是1024-P是设置保存Memcache的pid文件,我这里是保存在 /tmp/memcached.pid,2.如果要结束Memcache进程,执行:# kill `cat /tmp/memcached.pid` 测试Memcached: 复制代码[root@localhost /]# telnet 192.168.141.64 12000Trying 192.168.141.64...Connected to 192.168.141.64 (192.168.141.64).Escape character is '^]'.set key1 0 60 4zhouSTOREDget key1VALUE key1 0 4zhouEND当然,如果是windows,直接下载一个安装一下就好了
membercached应用:
提供UTIL:
<dependency> <groupId>membercached</groupId><artifactId>membercached</artifactId><version>2.6.6</version></dependency>
package util;import java.util.ArrayList;import java.util.Date;import java.util.List;import org.apache.commons.codec.digest.DigestUtils;import com.danga.MemCached.MemCachedClient;import com.danga.MemCached.SockIOPool;/** * * 项目名称:yy * 类名称:MemberCachedUtil * 类描述:TODO 缓存工具类 * 创建人: yy * 创建时间:2015年7月1日 下午3:43:19 * @version */ public class MemberCacheUtil {// 创建全局的唯一实例 protected static MemCachedClient mcc = new MemCachedClient(); public static final int ADDTYPE_ADD=0;//新数据 存入public static final int ADDTYPE_REPLACE=1;//值相同 存入public static final int ADDTYPE_SET=2;//任何情况 存入// 服务器列表和其权重 private static String[] servers = null; private static Integer[] weights = null; /** * @Title: get * @Description: TODO 根据key 返回 指定类型 * @date 2015年7月1日 * @author yy * @param @param key * @param @param c * @param @return * @return T * @throws */public static <T> T get(String key,Class c){key=DigestUtils.md5Hex(key); return (T) mcc.get(key);}/** * @Title: get * @Description: TODO 返回String类型 * @date 2016年1月4日 * @author yy * @param @param key * @param @return * @return String * @throws */public static String get(String key){return MemberCacheUtil.get(key, String.class);} public static Object getObject(String key) { return MemberCacheUtil.get(key, Object.class); }/** * @Title: put * @Description: TODO 存入缓存 * 如key value为null,则抛出:membercache参数不能为空 * @date 2016年1月4日 * @author yy * @param @param key * @param @param value * @param @param secends 0为 永不过期 * @param @return * @return boolean * @throws */public static boolean put(String key,Object value,long secends){if(key==null || value==null)throw new RuntimeException("membercache参数不能为空");if(key.length()>255)throw new RuntimeException("membercache key 长度不能超过255");key=DigestUtils.md5Hex(key);return put(key, value, secends, MemberCacheUtil.ADDTYPE_SET);}/** * @Title: clear * @Description: TODO 清除所有数据,慎用 * @date 2016年3月8日 * @author yy * @param * @return void * @throws */public static void clearAll(){mcc.flushAll();}/** * @Title: delete * @Description: TODO 根据key值删除缓存中信息 * @date 2016年3月8日 * @author yy * @param @param key * @return void * @throws */public static void delete(String key){if(key!=null)mcc.delete(key);} /** * @Title: init * @Description: TODO 初始化服务器,按先后顺序排列优先级 * @date 2016年1月4日 * @author yy * @param @param servername * @return void * @throws */ public static void init(String...servername) { servers=servername; weights=new Integer[servers.length]; for (int i = 0; i < servers.length; i++) {weights[i]=i+1;} connect(); }/** * @Title: add * @Description: TODO * @date 2015年7月1日 * @author yy * @param @param key * @param @param value * @param @param secends 0为 永不过期 * @param @param addtype 0新数据存入,1值相同存入 任何情况存入 * @param @return * @return boolean * @throws */private static boolean put(String key,Object value,long secends,int addtype){boolean result;switch (addtype) {case MemberCacheUtil.ADDTYPE_ADD:result=mcc.add(key, value,new Date(secends*1000));break;case MemberCacheUtil.ADDTYPE_REPLACE:result=mcc.replace(key, value,new Date(secends*1000));break;case MemberCacheUtil.ADDTYPE_SET:result=mcc.set(key, value,new Date(secends*1000));break;default:result=mcc.add(key, value,new Date(secends*1000));break;}return result;} private static void connect() { // 获取socke连接池的实例对象 SockIOPool pool = SockIOPool.getInstance(); // 设置服务器信息 pool.setServers(servers); pool.setWeights(weights); // 设置初始连接数、最小和最大连接数以及最大处理时间 pool.setInitConn(5); pool.setMinConn(5); pool.setMaxConn(250); pool.setMaxIdle(1000 * 60 * 60 * 6); // 设置主线程的睡眠时间 pool.setMaintSleep(30); // Tcp的规则就是在发送一个包之前,本地机器会等待远程主机 // 对上一次发送的包的确认信息到来;这个方法就可以关闭套接字的缓存, // 以至这个包准备好了就发; // 设置TCP的参数,连接超时等 pool.setNagle(false); pool.setSocketTO(3000); pool.setSocketConnectTO(0); // 初始化连接池 pool.initialize(); //测试是否已经连通 try {Thread.sleep(1000);} catch (InterruptedException e) {} MemberCacheUtil.put("000", "000", 3); if(MemberCacheUtil.get("000")==null) throw new RuntimeException("未成功链接memcache,请确认是否成功开启memcache..."); // 压缩设置,超过指定大小(单位为K)的数据都会被压缩 // mcc.setCompressEnable(true); // mcc.setCompressThreshold(64 * 1024); } public static void main(String[] args) { MemberCacheUtil.init("127.0.0.1:12000"); // mcc.flushAll(); /*for (int i = 0; i < 2; i++) { MemberCacheUtil.put("same" + i, JsonUtils.toJson(new float[]{1, 2, 3, 4, i}) , 1000); //System.out.println("same"+i+":" + MemberCacheUtil.get("same" + i, Object.class)); }*/ //System.out.println(MemberCacheUtil.get("same1",Object.class)); List list = new ArrayList(); list.add("001"); MemberCacheUtil.put("xxxx", list, 0L); System.out.println(MemberCacheUtil.getObject("xxxx"));}}
用main方法测试一下吧
1 0
- membercached安装与部署及应用
- membercached 的应用
- Hudson安装配置、部署应用及分析
- ansible的安装部署及简单应用
- Memcached高速缓存服务器部署及应用(一、Memcached在Windows平台下安装与配置)
- Memcached高速缓存服务器部署及应用(二、Memcached在Linux平台下安装与配置)
- [Flume]安装,部署与应用案例
- LAMP应用架构部署指南IV--MySQL安装及设置
- linux下安装tomcat服务及部署web应用
- Docker for Mac下载安装及部署应用
- Ubuntu16_x64下安装docker及部署web应用
- Weblogic9与Hibernate应用系统的安装与部署
- Spark部署及应用
- Svnmailer部署及应用
- CoreOS部署及应用
- 部署及更新应用
- Svnmailer部署及应用
- 应用分组部署及共用项与独立项详解
- MyBatis 实战小项目 自动回复机器人
- BLE 4.0 概述
- hadoop安装和维护02--创建用户和组
- JVM内存管理及垃圾回收【转】
- 数据结构-顺序队列
- membercached安装与部署及应用
- error running app no target device found
- Java日期字符串排序
- Android判断真机和模拟器
- 可以自定义布局的对话框---CommonDialog
- Cococa初学者使用锁的坑(Exec_bad_Instruction)
- hadoop HDFS结构
- js的闭包与作用域/作用域链
- PyQt5 Ubuntu 16.04/14.04 环境配置