- 浏览: 338877 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
孙艳霞111:
java.lang.IllegalStateException: Argument [RedirectAttributes] is of type Model -
llnyxxzj:
如果问题未解决可以看看http://blog.360chwl. ...
Caused by: org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bea -
u013810758:
楼主求帮助类 ReflectionUtils,Hibernat ...
BaseDao可以这样设计 -
rankx:
你好,楼主可否发一份 ReflectionUtils,Hibe ...
BaseDao可以这样设计
来源http://www.blogjava.net/sword/articles/246072.html?opt=admin
缘起: 在数据驱动的web开发中,经常要重复从数据库中取出相同的数据,这种重复极大的增加了数据库负载。缓存是解决这个问题的好办法。
Memcached是什么?
Memcached是由Danga Interactive开发的,高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。
Memcached能缓存什么?
通过在内存里维护一个统一的巨大的hash表,Memcached能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。
Memcached快么?
非常快。Memcached使用了libevent(如果可以的话,在linux下使用epoll)来均衡任何数量的打开链接,使用非阻塞的网络I/O,对内部对象实现引用计数(因此,针对多样的客户端,对象可以处在多样的状态), 使用自己的页块分配器和哈希表, 因此虚拟内存不会产生碎片并且虚拟内存分配的时间复杂度可以保证为O(1).。
Danga Interactive为提升Danga Interactive的速度研发了Memcached。目前,LiveJournal.com每天已经在向一百万用户提供多达两千万次的页面访问。而这些,是由一个由web服务器和数据库服务器组成的集群完成的。Memcached几乎完全放弃了任何数据都从数据库读取的方式,同时,它还缩短了用户查看页面的速度、更好的资源分配方式,以及Memcache失效时对数据库的访问速度。
Memcached的特点
Memcached的缓存是一种分布式的,可以让不同主机上的多个用户同时访问, 因此解决了共享内存只能单机应用的局限,更不会出现使用数据库做类似事情的时候,磁盘开销和阻塞的发生。
Memcached的使用
一 、Memcached服务器端的安装 (此处将其作为系统服务安装)
下载文件:memcached 1.2.1 for Win32 binaries (Dec 23, 2006)
1 解压缩文件到c:\memcached
2 命令行输入 'c:\memcached\memcached.exe -d install'
3 命令行输入 'c:\memcached\memcached.exe -d start' ,该命令启动 Memcached ,默认监听端口为 11211
通过 memcached.exe -h 可以查看其帮助
二、客户端使用
下载memcached java client:http://www.whalin.com/memcached/#download
1 解压后将java_memcached-release_2.0.1.jar jar包添加到工程的classpath中
2 利用memcached java client 一个简单的应用
Java代码
package com.danga.MemCached.test;
import java.util.Date;
import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool;
public class Test {
protected static MemCachedClient mcc = new MemCachedClient();
static {
String[] servers ={"192.168.40.4:12000"};
Integer[] weights = { 3 };
//创建一个实例对象SockIOPool
SockIOPool pool = SockIOPool.getInstance();
// set the servers and the weights
//设置Memcached Server
pool.setServers( servers );
pool.setWeights( weights );
// set some basic pool settings
// 5 initial, 5 min, and 250 max conns
// and set the max idle time for a conn
// to 6 hours
pool.setInitConn( 5 );
pool.setMinConn( 5 );
pool.setMaxConn( 250 );
pool.setMaxIdle( 1000 * 60 * 60 * 6 );
// set the sleep for the maint thread
// it will wake up every x seconds and
// maintain the pool size
pool.setMaintSleep( 30 );
// Tcp的规则就是在发送一个包之前,本地机器会等待远程主机
// 对上一次发送的包的确认信息到来;这个方法就可以关闭套接字的缓存,
// 以至这个包准备好了就发;
pool.setNagle( false );
//连接建立后对超时的控制
pool.setSocketTO( 3000 );
//连接建立时对超时的控制
pool.setSocketConnectTO( 0 );
// initialize the connection pool
//初始化一些值并与MemcachedServer段建立连接
pool.initialize();
// lets set some compression on for the client
// compress anything larger than 64k
mcc.setCompressEnable( true );
mcc.setCompressThreshold( 64 * 1024 );
}
public static void bulidCache(){
//set(key,value,Date) ,Date是一个过期时间,如果想让这个过期时间生效的话,这里传递的new Date(long date) 中参数date,需要是个大于或等于1000的值。
//因为java client的实现源码里是这样实现的 expiry.getTime() / 1000 ,也就是说,如果 小于1000的值,除以1000以后都是0,即永不过期
mcc.set( "test", "This is a test String" ,new Date(11211));
//十秒后过期
}
public static void output() {
//从cache里取值
String value = (String) mcc.get( "test" );
System.out.println(value);
}
public static void main(String[] args){
bulidCache();
output();
}
}
缘起: 在数据驱动的web开发中,经常要重复从数据库中取出相同的数据,这种重复极大的增加了数据库负载。缓存是解决这个问题的好办法。
Memcached是什么?
Memcached是由Danga Interactive开发的,高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。
Memcached能缓存什么?
通过在内存里维护一个统一的巨大的hash表,Memcached能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。
Memcached快么?
非常快。Memcached使用了libevent(如果可以的话,在linux下使用epoll)来均衡任何数量的打开链接,使用非阻塞的网络I/O,对内部对象实现引用计数(因此,针对多样的客户端,对象可以处在多样的状态), 使用自己的页块分配器和哈希表, 因此虚拟内存不会产生碎片并且虚拟内存分配的时间复杂度可以保证为O(1).。
Danga Interactive为提升Danga Interactive的速度研发了Memcached。目前,LiveJournal.com每天已经在向一百万用户提供多达两千万次的页面访问。而这些,是由一个由web服务器和数据库服务器组成的集群完成的。Memcached几乎完全放弃了任何数据都从数据库读取的方式,同时,它还缩短了用户查看页面的速度、更好的资源分配方式,以及Memcache失效时对数据库的访问速度。
Memcached的特点
Memcached的缓存是一种分布式的,可以让不同主机上的多个用户同时访问, 因此解决了共享内存只能单机应用的局限,更不会出现使用数据库做类似事情的时候,磁盘开销和阻塞的发生。
Memcached的使用
一 、Memcached服务器端的安装 (此处将其作为系统服务安装)
下载文件:memcached 1.2.1 for Win32 binaries (Dec 23, 2006)
1 解压缩文件到c:\memcached
2 命令行输入 'c:\memcached\memcached.exe -d install'
3 命令行输入 'c:\memcached\memcached.exe -d start' ,该命令启动 Memcached ,默认监听端口为 11211
通过 memcached.exe -h 可以查看其帮助
二、客户端使用
下载memcached java client:http://www.whalin.com/memcached/#download
1 解压后将java_memcached-release_2.0.1.jar jar包添加到工程的classpath中
2 利用memcached java client 一个简单的应用
Java代码
package com.danga.MemCached.test;
import java.util.Date;
import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool;
public class Test {
protected static MemCachedClient mcc = new MemCachedClient();
static {
String[] servers ={"192.168.40.4:12000"};
Integer[] weights = { 3 };
//创建一个实例对象SockIOPool
SockIOPool pool = SockIOPool.getInstance();
// set the servers and the weights
//设置Memcached Server
pool.setServers( servers );
pool.setWeights( weights );
// set some basic pool settings
// 5 initial, 5 min, and 250 max conns
// and set the max idle time for a conn
// to 6 hours
pool.setInitConn( 5 );
pool.setMinConn( 5 );
pool.setMaxConn( 250 );
pool.setMaxIdle( 1000 * 60 * 60 * 6 );
// set the sleep for the maint thread
// it will wake up every x seconds and
// maintain the pool size
pool.setMaintSleep( 30 );
// Tcp的规则就是在发送一个包之前,本地机器会等待远程主机
// 对上一次发送的包的确认信息到来;这个方法就可以关闭套接字的缓存,
// 以至这个包准备好了就发;
pool.setNagle( false );
//连接建立后对超时的控制
pool.setSocketTO( 3000 );
//连接建立时对超时的控制
pool.setSocketConnectTO( 0 );
// initialize the connection pool
//初始化一些值并与MemcachedServer段建立连接
pool.initialize();
// lets set some compression on for the client
// compress anything larger than 64k
mcc.setCompressEnable( true );
mcc.setCompressThreshold( 64 * 1024 );
}
public static void bulidCache(){
//set(key,value,Date) ,Date是一个过期时间,如果想让这个过期时间生效的话,这里传递的new Date(long date) 中参数date,需要是个大于或等于1000的值。
//因为java client的实现源码里是这样实现的 expiry.getTime() / 1000 ,也就是说,如果 小于1000的值,除以1000以后都是0,即永不过期
mcc.set( "test", "This is a test String" ,new Date(11211));
//十秒后过期
}
public static void output() {
//从cache里取值
String value = (String) mcc.get( "test" );
System.out.println(value);
}
public static void main(String[] args){
bulidCache();
output();
}
}
发表评论
-
toString
2013-09-28 11:00 919implements java.lang.Cloneabl ... -
匿名内部类 是否可以继承其它类,是否可以实现接口
2013-06-25 11:20 1559Inner Class(内部类)定义在类中的类。 Nested ... -
JAVA中的接口和抽象类(转)
2013-06-25 11:16 877在面向对象的概念中,我们知道所有的对象都是通过类来描绘的,但是 ... -
【解惑】领略Java内部类的“内部”
2013-06-25 10:57 896标签:Java 职场 休闲 内 ... -
Java内部类的使用小结
2013-06-25 10:51 1034标签:Java 内部类 休闲 职场 内部类是指在一个外部类的内 ... -
java内部类的作用分析
2013-06-25 10:16 980提起Java内部类(Inner Class)可能很多人不太熟悉 ... -
java中Class.forName的作用
2013-06-20 11:36 1122http://www.cnblogs.com/pyrmkj/a ... -
编写你自己的单点登录(SSO)服务
2013-06-18 16:15 1022http://blog.csdn.net/javachanne ... -
Windows和Linux环境下Memcached安装与配置
2013-06-08 14:32 1012来源http://www.cnblogs.com/xd502d ... -
windows下安装memcached
2013-06-08 11:52 949来源http://kevin-gzhz.iteye.c ... -
Java中的值传递和引用传递
2013-05-24 17:04 938来源http://www.cnblogs.com/clara/ ... -
java中的值传递和引用传递
2013-05-24 16:51 892来源http://www.blogjava.net/jiafa ... -
java自定义注解
2013-05-24 14:23 4910来源http://www.cnblogs.com/xd502d ... -
【状态保持】会话状态Session解析以及原理分析
2013-05-21 17:16 1047来源http://www.cnblogs.com/wl ... -
log4j 详解
2013-05-21 16:16 972http://www.blogjava.net/hwpok/a ... -
静态导入Static import
2013-05-21 11:55 983http://www.cnblogs.com/mengdd/a ... -
Java 可变参数
2013-05-21 11:49 887http://www.cnblogs.com/whgw/arc ... -
java枚举类型
2013-05-21 11:45 1001http://www.cnblogs.com/Fskjb/ar ... -
Struts2数据传输的背后机制:ValueStack(值栈)(转载)
2013-05-17 14:40 1167http://www.blogjava.net/freeman ... -
详细介绍Java垃圾回收机制
2013-05-17 11:16 1037来源http://www.cnblogs.com/laoyan ...
相关推荐
分布式缓存系统在现代Web开发中扮演...总的来说,分布式缓存系统Memcached是现代Web应用中不可或缺的工具。通过深入学习和实践,我们可以充分利用其优势,优化应用性能,减轻数据库压力,从而提供更高效、稳定的服务。
通过阅读《大型分布式网站架构设计与实践》,读者不仅可以学习到分布式系统的设计原理,还能了解到各种实际案例,这对于从事互联网开发或架构设计的人来说是一份宝贵的参考资料。同时,结合文中提到的源码分析和工具...
其中Memcached是一个高性能的分布式内存对象缓存系统,主要用于缓存数据库查询结果和动态Web内容;HBase是基于Google的BigTable模型构建的,支持高可靠性的分布式存储系统;Cassandra是一个高度可扩展的分布式NoSQL...
**memcached** 是一个高性能的分布式内存对象缓存系统,用于减轻数据库负载,通过在内存中缓存数据和对象来减少读取数据库的次数,从而极大地提高了动态Web应用的速度。 **重要知识点**: - **memcached的工作原理...
- **Memcached**:分布式缓存系统,用于减轻数据库负担。 - **Redis**:提供持久化的键值存储,支持多种数据结构。 - **消息队列**:如RabbitMQ、Kafka等,用于解耦系统组件。 - **负载均衡**:使用软件或硬件...
美国Facebok.com,中国Yeejee.com,日本mixi.jp均采用开源分布式缓存服务器Memcache 52 3,图片缓存和加 52 memcached+squid+apache deflate解决网站大访问量问题 52 FeedBurner:基于MySQL和JAVA的可扩展Web...
最后,考虑到网站的可扩展性和性能优化,可能采用了缓存策略(如Redis或Memcached)来减少数据库负载,以及负载均衡和分布式计算技术来应对高并发访问。同时,SEO(搜索引擎优化)也是提升网站可见性的重要一环,这...
此外,Redis还支持主从复制,能构建高可用的分布式系统。 Redis的性能非常高,如描述中提到,SET操作每秒钟可达110000次,GET操作每秒81000次,这得益于其数据都存储在内存中。Redis提供了丰富的命令接口,例如: -...