Memcached缓存框架的使用

Memcach什么是Memcache

  1. 什么是Memcache?

Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。Memcached是一个高并发的内存键值对缓存系统,它的主要作用是将数据库查询结果,内容,以及其它一些耗时的计算结果缓存到系统内存中,从而加速Web应用程序的响应速度。

  1. Memcache和memcached的区别?

    其实Memcache是这个项目的名称,而memcached是它服务器端的主程序文件名,知道我的意思了吧。一个是项目名称,一个是主程序文件名,在网上看到了很多人不明白,于是混用了。

  2. Memcached的安装

在1.4.5版本之前,memcached可以被安装成一个服务,但之后的版本中该功能被移除了。因此memcached的安装可以分为两类,第一类是1.4.5之前的版本,另一类是1.4.5之后的版本。

1)   安装memcached < 1.4.5:

  1. 将下载的文件解压到任意目录。
  2. 2. 1.4.5之前版本的memcached会被安装成一个服务,以administrator打开控制台,运行下面的命令:

c:\memcached\memcached.exe -d
install

* 注意将路径c:\memcached\memcached.exe替换成你本地的安装路径。

  1. 然后使用下面的命令启动或停止memcached服务:

c:\memcached\memcached.exe -d
start

c:\memcached\memcached.exe -d
stop

  1. 例如你想增加memcached所使用的最大内存限制,可以修改ImagePath的值:

"c:\memcached\memcached.exe"
-d runservice -m 512

* 除了参数‘-m 512‘之外,你还可以使用其它的参数。通过“c:\memcached\memcached.exe
-h”可以查看所有能使用的参数。

  1. 如果要卸载memcached服务,可以使用下面的命令:

c:\memcached\memcached.exe -d
uninstall

2)  
安装memcached >= 1.4.5

  1. 将下载的文件解压到任意目录。
  2. 1.4.5之后版本的memcached不能作为Windows服务来运行,可以在命令行中启动memcache。以管理员身份打开cmd,然后输入如下命令:

Memcached-x86 –p 11211 –m 128 –vv

memcached启动选项如下:


选项


说明


-p


使用的TCP端口,默认为11211


-m


最大内存大小默认为64m


-vv


用very verbose模式启动,调试信息和错误输出到控制台


-d


作为daemon在后台启动

  1. 在java中如何使用Memcache

    1. 添加jar包:

commons-pool-1.5.6.jar、

java_memcached-release_2.6.6.jar、

slf4j-api-1.6.1.jar、

  1. 添加辅助类MemcachedUtil.java

import
java.util.Date;

import
com.danga.MemCached.MemCachedClient;

import
com.danga.MemCached.SockIOPool;

public
class MemcachedUtil {

/**

* memcached客户端单例

*/

private static MemCachedClient
cachedClient = new MemCachedClient();

/**

* 初始化连接池

*/

static {

//获取连接池的实例

SockIOPool pool =
SockIOPool.getInstance();

//服务器列表及其权重

String[] servers =
{"127.0.0.1:11211"};

Integer[] weights = {3};

//设置服务器信息

pool.setServers(servers);

pool.setWeights(weights);

//设置初始连接数、最小连接数、最大连接数、最大处理时间

pool.setInitConn(10);

pool.setMinConn(10);

pool.setMaxConn(1000);

pool.setMaxIdle(1000*60*60);

//设置连接池守护线程的睡眠时间

pool.setMaintSleep(60);

//设置TCP参数,连接超时

pool.setNagle(false);

pool.setSocketTO(60);

pool.setSocketConnectTO(0);

//初始化并启动连接池

pool.initialize();

//压缩设置,超过指定大小的都压缩

//      cachedClient.setCompressEnable(true);

//     
cachedClient.setCompressThreshold(1024*1024);

}

private MemcachedUtil(){

}

public static boolean add(String key,
Object value) {

return cachedClient.add(key, value);

}

public static boolean add(String key,
Object value, Date expireDate) {

return cachedClient.add(key, value,
expireDate);

}

public static boolean add(String key,
Object value, Integer millSeconds){

return
cachedClient.add(key, value, new Date(new Date().getTime()+millSeconds));

}

public static boolean put(String key,
Object value) {

return cachedClient.set(key, value);

}

public static boolean put(String key,
Object value, Date expireDate) {

return cachedClient.set(key, value,
expireDate);

}

public static boolean put(String key,
Object value, Integer millSeconds){

return
cachedClient.set(key, value, new Date(new Date().getTime()+millSeconds));

}

public static boolean replace(String key,
Object value) {

return cachedClient.replace(key,
value);

}

public static boolean replace(String key,
Object value, Date expireDate) {

return cachedClient.replace(key,
value, expireDate);

}

public static boolean replace(String key,
Object value, Integer millSeconds){

return
cachedClient.replace(key, value, new Date(new Date().getTime()+millSeconds));

}

public static Object get(String key) {

return cachedClient.get(key);

}

public static Object delete(String key) {

return cachedClient.delete(key);

}

}

  1. 注意,被添加到缓存的类必须实现接口Serializable。
时间: 2024-08-16 14:23:39

Memcached缓存框架的使用的相关文章

Memcached缓存框架

开发基于BS模式的程序,都有报表模块,那么如何开发报表模块. 1.定时发布报表数据到指定的临时表(可能是定时任务) 2.用户通过HTTP请求后台,访问临时表,查询报表数据 3.增加memcached缓存,再次访问是直接访问缓存. memcached原理:基于内存的缓存分布式系统,基于libevent(epoll)或者的事件机制,保证非阻塞的网络IO,内部数据结构采取链表,Hash索引.内存管理图:分配的内存分割成各种尺寸的块(chunk), 并把尺寸相同的块分成组(chunk的集合) memca

Memcached与Spring AOP构建数分布式据库前端缓存框架

由于上一篇有介绍了Memcached缓存,并集群部署,这边我们就不介绍,我们直接介绍Memcached与Spring AOP构建分布式数据库前端缓存框架 一.Java 实现Memcached客户端,实现分布式 (1)需要的jar 1)commons-pool-1.5.6.jar 2)java_memcached-release_2.6.3.jar 3)slf4j-api-1.6.1.jar 4)slf4j-simple-1.6.1.jar (2)Java 实现Memcached客户端代码如下:

Java缓存框架

JBossCache/TreeCache JBossCache是一个复制的事务处理缓存,它允许你缓存企业级应用数据来更好的改善性能.缓存数据被自动复制,让你轻松进行Jboss服务器之间的集群工作.JBossCache能够通过Jboss应用服务或其他J2EE容器来运行一个Mbean服务,当然,它也能独立运行. JBossCache包括两个模块:TreeCache和TreeCacheAOP. TreeCache --是一个树形结构复制的事务处理缓存. TreeCacheAOP --是一个“面向对象”

java 开源缓存框架--转载

原文地址:http://www.open-open.com/13.htm JBossCache/TreeCache JBossCache是一个复制的事务处理缓存,它允许你缓存企业级应用数据来更好的改善性能.缓存数据被自动复制,让你轻松进行Jboss服务器之间的集群工作.JBossCache能够通过Jboss应用服务或其他J2EE容器来运行一个Mbean服务,当然,它也能独立运行. JBossCache包括两个模块:TreeCache和TreeCacheAOP. TreeCache --是一个树形

.NET缓存框架CacheManager在混合式开发框架中的应用(1)-CacheManager的介绍和使用

在我们开发的很多分布式项目里面(如基于WCF服务.Web API服务方式),由于数据提供涉及到数据库的相关操作,如果客户端的并发数量超过一定的数量,那么数据库的请求处理则以爆发式增长,如果数据库服务器无法快速处理这些并发请求,那么将会增加客户端的请求时间,严重者可能导致数据库服务或者应用服务直接瘫痪.缓存方案就是为这个而诞生,随着缓存的引入,可以把数据库的IO耗时操作,转换为内存数据的快速响应操作,或者把整个页面缓存到缓存系统里面.缓存框架在各个平台里面都有很多的实现,基本上多数是采用分布式缓存

Django—— 缓存框架

译者注:1.无用的,吹嘘的说辞不翻译:2.意译,很多地方不准确. 动态网站最为重要的一点就是好,网页是动态的.每一次用户请求页面,网站就要进行各种计算——从数据库查询,到render模板,到各种逻辑运算——生成页面所需的.这个过程是异常消耗资源的,远远比从硬盘读取一个文件然后显示出来的代价高昂. 对于大多数中小网站来说,这也许不是问题,因为他们的访问量不大,而对于大型网站而言,必须尽量减少不必要的服务器资源开支. 因此,有了缓存技术. 缓存就是把一些需要消耗很多资源的计算结果保存下来,当下次需要

.NET缓存框架CacheManager---1、CacheManager的介绍

在我们开发的很多分布式项目里面(如基于WCF服务.Web API服务方式),由于数据提供涉及到数据库的相关操作,如果客户端的并发数量超过一定的数量,那么数据库的请求处理则以爆发式增长,如果数据库服务器无法快速处理这些并发请求,那么将会增加客户端的请求时间,严重者可能导致数据库服务或者应用服务直接瘫痪.缓存方案就是为这个而诞生,随着缓存的引入,可以把数据库的IO耗时操作,转换为内存数据的快速响应操作,或者把整个页面缓存到缓存系统里面.缓存框架在各个平台里面都有很多的实现,基本上多数是采用分布式缓存

数据库历险记(三) | 缓存框架的连环炮

文章首发于微信公众号「陈树义」,专注于 Java 技术分享的社区.点击链接扫描二维码,与500位小伙伴一起共同进步.微信公众号二维码 http://p3npq6ecr.bkt.clouddn.com/blog/chenshuyi_gongzhonghao_guide_full.jpg 最近在思考数据库以及缓存的问题,发现这些知识点其实是有一点关联的,于是这篇文章通过一个连环提问的方式将这些知识点串联起来. 问:为什么要用 Memcached.Redis,直接用 MySQL 这些数据库不好吗? 答

缓存框架Guava Cache部分源码分析

在本地缓存中,最常用的就是OSCache和谷歌的Guava Cache.其中OSCache在07年就停止维护了,但它仍然被广泛的使用.谷歌的Guava Cache也是一个非常优秀的本地缓存,使用起来非常灵活,功能也十分强大,可以说是当前本地缓存中最优秀的缓存框架之一.之前我们分析了OSCache的部分源码,本篇就通过Guava Cache的部分源码,来分析一下Guava Cache的实现原理. 在分析之前,先弄清数据结构的使用.之前的文章提到,OSCache使用了一个扩展的HashTable,作