实战Memcached缓存系统(1)Memcached基础及示例程序

尊重知识,转载请注明本文来自:编程艺术家Poechant的CSDN博客 http://blog.csdn.net/potent


1、Cache定义
(1)狭义概念:用于CPU的相对高速处理与主存(Main Memory)的相对低速处理的之间起到协调功能的硬件设备。
(2)广义概念:用于速度相差较大的两种硬件之间,起到协调两者数据传输速度差异的结构。
狭义概念来自于Cache自1967出现以来较长时间内的应用场景。因为CPU的数据处理速度,要远远高于主存,所以在CPU和主存之间会有高速缓存设备,甚至是多级缓存设备。而广义概念,则是目前已经被广泛接受的一种定义,且广义概念中,Cache不再只局限于硬件,也可以是软件。比如用于网络相对低速传输与磁盘相对高速传输之间的速度差异协调。


2、Cache的本质原理
可以一句话概括,就是:Cache把要到慢速设备中取的数据预先放到快速设备中。


3、几种类型的Cache
(1)CPU Cache:置于CPU和主存之间,用于加速CPU对主存的相对慢速操作。
(2)Browser Cache:置于客户端与服务器之间,用于加速客户端对服务器的相对慢速操作。
(3)Server Cache:置于网络请求与本地文件之间,用于加速网络请求对本地文件的相对慢速操作。
(4)CDN:CDN即Content Delivery Network,在各地设置的节点Cache,加速用户对服务网络的相对慢速操作。
(5)Database Cache
(6)OS Cache:内存中存在的对于硬盘读写的缓冲区域。


4、What is Memcached?

Memcached是一个免费开源、高性能、分布式的内存对象缓存系统。Memcached是在内存中,为特定数据(字符串或对象)构建key-value的小块数据存储。


5、下载Memcached的服务器端软件

Windows平台版本下载:http://splinedancer.com/memcached-win32/memcached-1.2.4-Win32-Preview-20080309_bin.zip

Linux平台版本下载:http://memcached.googlecode.com/files/memcached-1.4.10.tar.gz


6、在服务器上部署Memcached Server

以下以Windows平台为例:

参考:http://www.codeforest.net/how-to-install-memcached-on-windows-machine

下载下来的Windows版本解压到C:/memcached/

在控制台输入命令安装:

c:/memcached/memcached.exe  -d install

启动:

c:/memcached/memcached.exe -d  start

或:

net start "memcached Server"

默认的缓存大小为64M,如果不够用,请打开注册表,找到:

HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/memcached  Server .

将其内容修改为:

“C:/memcached/memcached.exe” -d runservice -m 512


7、下载Memcached的客户端API包

下载地址:http://spymemcached.googlecode.com/files/memcached-2.5.jar


8、编写一个Java数据类

package com.sinosuperman.memcached;

import java.io.Serializable;


public class User implements Serializable{ 

	private static final long serialVersionUID = -372274003834027815L;

	String userId;
	
	public User(String userId) { 
		super(); 
		this.userId = userId; 
	}
	
	public String getUserId() { 
		return userId; 
	} 
	
	public void setUserId(String userId) { 
		this.userId = userId; 
	} 
		
	@Override 
	public String toString() { 
		// TODO Auto-generated method stub 
		StringBuffer sb=new StringBuffer(); 
		sb.append("userId="+this.userId); 
		return sb.toString(); 
	} 
} 


9、编写一个Memcached的客户端

package com.sinosuperman.memcached;

import java.io.IOException;
import java.net.InetSocketAddress;

import net.spy.memcached.MemcachedClient;

public class TestMemcached {
	public static void main(String[] args) throws IOException {
		MemcachedClient cache = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211));
		for (int i = 1; i < 10; i++) {
			cache.set("T0001" + i, 3600, new User(i + ""));	
		}
		User myObject = (User) cache.get("T00011");
		System.out.println("Get object from mem :" + myObject); 
	} 
}


10、运行测试

运行结果应该如下:

2011-12-15 17:25:30.276 INFO net.spy.memcached.MemcachedConnection:  Added {QA sa=/127.0.0.1:11211, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0} to connect queue
2011-12-15 17:25:30.292 INFO net.spy.memcached.MemcachedConnection:  Connection state changed for sun.nio.ch.SelectionKeyImpl@c62080
Get object from mem :userId=1

尊重知识,转载请注明本文来自:编程艺术家Poechant的CSDN博客 http://blog.csdn.net/poechant

-

内容概要:本文深入介绍了Memcached,一个高性能分布式内存对象缓存系统,旨在加速Web应用并减少数据库负载。文章从0到1讲解Memcached的工作原理及其优势,涵盖其高性能的内存存储、分布式的协同力量和简洁易用的API接口。文中详细探讨了Memcached的安装与配置,包括Windows和Linux系统的安装步骤及关键配置参数。进一步,文章展示了Memcached的核心操作,如数据的存储、获取、删除与管理,以及原子操作的应用。接着,通过实际项目中的应用案例,如Web应用性能加速和分布式系统缓存协作,展示了Memcached的具体应用场景。最后,文章讨论了Memcached的性能优化策略、监控工具及指标分析,并与Redis进行了深度对比,分析了两者在性能、数据结构支持、持久化机制等方面的异同。 适合人群:具备一定编程基础,特别是从事Web开发和分布式系统开发的研发人员。 使用场景及目标:①加速Web应用性能,减轻数据库负载;②在分布式系统中实现数据共享和协同工作;③优化缓存策略,提升系统响应速度和资源利用率;④了解Memcached与Redis的区别,选择合适的缓存工具。 其他说明:本文不仅提供了理论知识,还包含大量实际操作示例和代码片段,帮助读者更好地理解和应用Memcached。此外,通过性能优化和监控工具的介绍,指导读者如何确保Memcached在实际项目中的最佳性能表现。
Buffer内存管理实战技巧 # 缓存系统Buffer管理 - Redis与Memcached优化秘籍 缓存系统作为现代计算架构的核心组件,Buffer内存管理直接决定数据访问延迟和系统吞吐量,涵盖Redis、Memcached和CPU缓存等多个层面。本页面系统解析缓存系统的Buffer优化技巧,从持久化Buffer到内存碎片管理,为开发者和系统架构师提供实用代码示例和最佳实践,助力构建低延迟、高可用的缓存解决方案。 Redis的Buffer优化包括RDB持久化Buffer,采用压缩技术和批量写入减少磁盘I/O;AOF日志Buffer通过组提交和异步刷盘策略,平衡数据持久性和性能;复制backlog Buffer支持动态扩容和循环缓冲,确保主从同步效率;客户端Buffer则通过大小限制和动态调整,防止内存泄漏和溢出。示例代码详细展示了C++实现,强调Buffer大小设置、压缩优化和并发控制。Memcached采用Slab Allocator机制,优化Chunk大小和Item对齐,减少内存碎片;LRU回收策略结合时钟算法,高效清理过期Item;内存碎片监控和整理机制,提升内存利用率。 CPU缓存优化聚焦于Cache Line对齐、数据局部性和预取技术,通过结构体对齐和预取指令减少False Sharing,提升计算效率;示例代码演示了对齐数据结构和预取函数的使用,强调如何利用L1/L2/L3缓存层次结构。通用最佳实践包括批量处理、压缩技术、实时监控和动态调优,帮助系统适应高并发和多样化负载。合理的Buffer管理能显著降低延迟、提高缓存命中率,是构建高性能缓存系统的关键所在。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

钟超

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值