`
meiyx
  • 浏览: 181512 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

memcached集群开发

阅读更多
memcached是高性能的分布式内存缓存服务器。一般的使用目的
是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展
性。
1 确保libevent 和memcacahed 安装成功,并且启动
2 配置文件memcached.properties---memcached Server 配置
memcached.servers=10.100.1.117:11211,10.100.120.185:11211
memcached.weights=3,2
memcached.initConn=100
memcached.minConn=20
memcached.maxConn=1024
memcached.socketTimeout=3000
memcached.maintSleep=5000
#memcached yes/no
memcached.isEnable=yes
memcached.commonCacheTime=600000000
#categories cached time: (30 daies)
memcached.categoriesCacheTime=2592000000
#downTicket cache time: (one day)
memcached.downTicketCacheTime=86400000
memcached 分布式开发就是在此配置文件中配置多了servers 和 weights。当然你也可以不用配置配置文件直接在程序中写


之后java代码解析我把我项目中用的拷个大家供大家参考
public class MCLoader {

	private static MCLoader loader = new MCLoader();
	private Properties p = new Properties();

	private MCLoader() {
		try {
			InputStream in = this.getClass().getClassLoader().getResourceAsStream("memcached.properties");
			p.load(in);
		} catch (IOException e1) {
			e1.printStackTrace();
		}
	}

	public final static MCLoader getInstance() {
		return loader;
	}

	public Object get(String key) {
		return p.get(key);
	}
}


public class MemCacheMgr {
	private static MemCacheMgr _instance = new MemCacheMgr();
	private MemCachedClient mc = null;

	public static MemCacheMgr getInstance() {
		return _instance;
	}

	public Date getTime(String key) {
		Calendar c = Calendar.getInstance();
		long cacheTime = System.currentTimeMillis()
				+ Long.parseLong((String) MCLoader.getInstance().get(key));
		Date ct = null;
		c.setTimeInMillis(cacheTime);
		ct = c.getTime();
		return ct;
	}

	public Date getTime() {
		Calendar c = Calendar.getInstance();
		long cacheTime = System.currentTimeMillis()
				+ Long.parseLong((String) MCLoader.getInstance().get(
						"memcached.cacheTime"));
		Date ct = null;
		c.setTimeInMillis(cacheTime);
		ct = c.getTime();
		return ct;
	}

	private MemCacheMgr() {
		String[] serverArray = null;
		Integer[] weights = null;
		String[] weightsArray = null;

		String serverList = (String) MCLoader.getInstance().get(
				"memcached.servers");
		String weightList = (String) MCLoader.getInstance().get(
				"memcached.weights");
		int initConn = Integer.parseInt((String) MCLoader.getInstance().get(
				"memcached.initConn"));
		int minConn = Integer.parseInt((String) MCLoader.getInstance().get(
				"memcached.minConn"));
		int maxConn = Integer.parseInt((String) MCLoader.getInstance().get(
				"memcached.maxConn"));
		int socketTimeOut = Integer.parseInt((String) MCLoader.getInstance().get(
				"memcached.socketTimeout"));
		int maintSleep = Integer.parseInt((String) MCLoader.getInstance().get(
				"memcached.maintSleep"));

		if (serverList.indexOf(",") > 0) {
			serverArray = serverList.split(",");
			System.out.println(serverArray);
		} else {
			serverArray = new String[] { serverList };
			System.out.println(serverArray);
		}
		if (weightList.indexOf(",") > 0) {
			weightsArray = weightList.split(",");
			Integer[] weightsI = new Integer[weightsArray.length];
			for (int i = 0; i < weightsArray.length; i++) {
				weightsI[i] = Integer.parseInt(weightsArray[i]);
			}
			weights = weightsI;
		} else {
			weights = new Integer[] { Integer.parseInt(weightList) };
		}
		// initialize the pool for memcache servers
		SockIOPool pool = SockIOPool.getInstance();
		pool.setServers(serverArray);
		pool.setWeights(weights);
		pool.setInitConn(initConn);
		pool.setMinConn(minConn);
		pool.setMaxConn(maxConn);
		pool.setMaintSleep(maintSleep);
		pool.setNagle(false);
		pool.setSocketTO(socketTimeOut);
		pool.setHashingAlg(SockIOPool.CONSISTENT_HASH);
		pool.initialize();
		mc = new MemCachedClient();
	}

	public MemCachedClient getCache() {
		return mc;
	}

	/**
	 * public void set(String key, String value) { set(key, value, null); }
	 */

	public void set(String key, String value, String timeStr) {
		MemCachedClient mc = MemCacheMgr.getInstance().getCache();
		Long cacheTime = null;
		String cacheTimeValue = "";

		if (StringUtil.isNotEmpty(timeStr)) {
			try {
				cacheTimeValue = (String) MCLoader.getInstance().get(timeStr);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}

		if (StringUtil.isNotEmpty(cacheTimeValue)) {
			cacheTime = Long.parseLong(cacheTimeValue);
		} else {
			cacheTime = Long.parseLong((String) MCLoader.getInstance().get(
					"memcached.commonCacheTime"));
		}

		Calendar c = Calendar.getInstance();
		c.setTimeInMillis(cacheTime);
		Date ct = c.getTime();
		mc.set(key, value, ct);

	}

	/**
	 * 根据key从memcached服务中取得value
	 * 
	 * @param key
	 * @return
	 */
	public String getValue(String key) {
		String value = (String) mc.get(key);
		return value;
	}

	public static void main(String[] args) {

		//_instance.set("test", "gga22", "100000");
//    	 _instance.getInstance().mc.flushAll();//清空memecache 服务的缓存数据
		 System.out.println(_instance.getValue("eps.freetoplist1"));
		
	}

之后你就可以通过get,set方法从缓存中获得和存储数据了。
分享到:
评论

相关推荐

    memcached原理和使用详解

    资源名称:memcached原理和使用详解内容简介: Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库...

    PHP分布式缓存memcached开发包

    作为PHP开发人员,我们一般能想到的方法有页面静态化处理、防盗链、CDN内容分发加速访问、mysql数据库优化建立索引、架设apache服务器集群()、还有就是现在流行的各种分布式缓存技术:如memcached/redis;...

    Memcached缓存资料

    《Memcached内存分析、调优、集群.pptx》 《NET版分布式缓存Memcached测试实例.docx》 《Memcached管理及_.NET_开发.doc》 《memcached-win32-1.4.4-14.zip》 《安装Memcached及Memcached配置.doc》 《Linux...

    Java环境下Memcached应用详解.docx

    这里将介绍Java环境下Memcached应用,Memcached主要是集群环境下的缓存解决方案,希望本文对大家有所帮助。 本文将对在Java环境下Memcached应用进行详细介绍。Memcached主要是集群环境下的缓存解决方案,可以运行在...

    分布式集群、PB级别网站性能优化

    Memcached篇 Redis 项目开发准备工作 项目开发(前台UI) 项目开发(前台业务流程) 项目开发(后台管理) 大数据高并发系统架构实战方案 大数据高并发架构实战案例分享 Piranha安装快速搭建LVS负载均衡集群 LVS...

    基于memcached的云缓存ARCUS.zip

    Arcus 是一个基于 memcached 的云缓存,由 NAVER Corp 公司开发。 arcus-memcached 经过大幅度的修改,可以支持 NAVER 的功能和性能要求。Arcus 支持多种数据机构 (List, Set, B tree),除了支持基本的memcached ...

    MX快速开发框架

    3、框架完全支持集群、分布式开发。 4、框架完美应用于WEB开发、APP后台开发、其他数据接口开发。 5、提供MX自主开发的简易流程引擎,简单易用,流程驱动利器!源码完全开放! 由于资源过大,在附件中附上资源的...

    集群好书《高性能Linux服务器构建实战》 试读章节下载

    10.2.3 软件开发人员 10.3 影响Linux性能的各种因素 10.3.1 系统硬件资源 10.3.2 操作系统相关资源 10.3.3 应用程序软件资源 10.4 系统性能分析标准和优化原则 10.5 几种典型应用对系统资源使用的特点 ...

    PHP开发高可用高安全App后端

    PHP 开发者可以使用 Redis、Memcached 等缓存服务器来实现缓存机制。 高安全 高安全是指系统或应用在防止各种攻击和未经授权的访问的能力。 PHP 开发高安全 App 后端需要考虑以下几个方面: 1. 输入验证:对用户...

    nginx+apache+mysql+php+memcached+squid搭建集群web环境

    当前,LAMP开发模式是WEB开发的首选,如何搭建一个高效、可靠、稳定的WEB服务器一直是个热门主题,本文就是这个主题的一次尝试。

    【ASP.NET编程知识】利用docker-compose搭建AspNetCore开发环境.docx

    再组合各 Web 程序、Redis/Memcached、SqlServerOnLinux。 新建目录结构 新建一个目录 sites,所有和集群相关的都放在这里,目录结构如下所示: sites nginx sites-enabled default Dockerfile redis Dockerfile ...

    E8工作流平台架构白皮书

    架构中采用HttpRunTime.Cache 戒MemCached 缓存数据,支持集群不分布式部署。同 时发布了一套完整的API 接口,便利亍三方系统的快速接入和秱劢化平台安全集成。整个 平台具备有界面简洁、流程灵活、操作方便、统计...

    架构设计方案

    3)采用Oscache实现页面缓存,采用Memcached实现数据缓存 4)采用独立的图片服务器集群来实现图片资源的存储及WEB请求 2.1.3数据存储的设计思路 1)数据库拆分,把生产数据库和查询数据库分离,对生产数据库采用RAC实现...

    Membase1.7.1第二部分(共二部分)

    该产品主要是由North Scale的memcached核心团队成员开发完成,其中还包括Zynga和NHN这两个主要贡献者的工程师,这两个组织都是很大的在线游戏和社区网络空间的供应商。 Membase容易安装、操作,可以从单节点方便的...

    nosql课程

    由浅入深讲解NOSQL数据库,从NOSQL发展的背景,NOSQL理论,以及NOSQL具体数据库的开发、管理与优化,以及分布式集群架构实践等。侧重数据库的运维管理。 3.主要面向初中级开发人员,运维与DBA等1.NoSql视频教程-2018...

    Java开发中的Memcache原理及实现

    Memcache(Memcached)是集群环境下的缓存解决方案。 Memcache 是 danga.com 的一个项目,最早是为 LiveJournal 服务的,目前全世界不少 人使用这个缓存项目来构建自己大负载的网站,来分担数据库的压力。它可以应对...

    JAVA_redis面试专题66道.pdf

    因为 Linux 版本已经相当稳定,而且用户量很大,无需开发 Windows 版本,反而会带来兼容性等问题。 Redis 集群方案: 1. codis:codis 是一个redis 集群方案,提供了高可用性和高扩展性。 2. Redis Cluster:Redis...

    利用docker-compose搭建AspNetCore开发环境

    使用docker-compose搭建AspNetCore开发...再组合各Web程序、Redis/Memcached、SqlServerOnLinux。 新建一个目录sites,所有和集群相关的都放在这里,目录结构如下所示 sites  nginx  sites-enabled  default  Docke

Global site tag (gtag.js) - Google Analytics