memcach的原理
概念:Memcached是国外社区网站LiveJournal的开发团队开发的高性能内存缓存服务器,通过缓存数据库的结果,减少数据库访问次数,以提高动态WEB的速度,提高可扩展性;
运行过程:浏览器首次访问读取的是数据库中的数据,返回的同时保存到memcached中;第二次以后直接访问memcached
数据存储方式:Slab allocation:基本原理是先把内存安装指定的大小分割成特定长度的块,并把内存相同的块分成组,以完全解决内存碎片问题;
1、page:分配给slab的内存空间,默认是1M,分配给slab之后,根据slab的大小分配成chunk;
2、chunk:存储数据的内存空间
3、class:特定大小的chunk的分组
memcached收到数据后选择最合适的chunk缓存数据,memcached中保存着空闲的chunk列表,根据该列表选择chunk缓存数据;
slab的缺点:由于是分配了固定大小的内存,因此无法充分利用内存,所以比如在128字节的内存中存储100字节的数据,剩下的28个字节的内存就浪费了。
数据过期方式:Lazy Expiration +LRU
Lazy Expiration (懒到期): memcached不会在内部监视数据是否过期,而是在get的时候查看数据上的时间戳,检查记录是否过期;因此memcached不会在过期监视上消耗CPU时间;
LRU(最近最少使用机制):memcached优先使用过期记录的空间;但即使如此也会发生追加新纪录时空间不足的情况出现,此时就要使用最近最少使用机制来分配内存空间
因此,当memcached的内存不足时而且又无法总class中获得内存时就会通过最近最少使用机制搜索记录,并将这些记录删掉,将内存分配给新增的记录。
应用程序---》客户端程序分布式算法----》多个memcached;
memcached的一些特性和限制:
memcached中保存的数据量没有限制,只要内存足够;
memcached最大内存使用是2G,要使用更多的内存可以分多个端口开启多个memcached进程
最大30天的数据过期时间,设置为永久的也会在这个时间过期;
最大键长是250个字节,超过该值无法存储;
单个item的最大长度是1MB,超过1MB的数据不予存储;他是默认的slab大小
最大连接数是200,最大软连接数是1024
相关推荐
### 浅析Python的Django框架中的Memcached #### 一、引言 在现代Web开发中,提高网站性能及响应速度是至关重要的任务之一。动态网站虽然能够提供丰富的交互性和个性化体验,但由于每次访问都需要从数据库中获取...
2. memory cache: 将 Redis 看作是一个把数据存储在内存中的高速缓存,用来在应用和数据库之间提供缓冲,替代 memcached。 3. data structure server: 主要利用了复杂数据结构的高速操作,提供某些特殊业务场景的...
《云端高性能技术架构浅析》 在当今互联网时代,云端高性能技术架构对于提供高效稳定的服务至关重要。无论是国际巨头Google、Facebook、Amazon,还是国内的Baidu、Taobao等,它们都构建了强大的技术架构来应对高...
首先,Memcached是一个分布式内存对象缓存系统,常用于减轻数据库负载。它适用于动态、数据库驱动的网站,通过存储数据和对象在内存中来减少数据库查询。然而,Memcached并不适合所有个人网站,因为它主要针对分布式...
### 浅析主流商业和开源ESB产品 #### 概述 随着企业级应用的日益复杂,企业服务总线(Enterprise Service Bus,简称ESB)作为一种整合不同系统间通信的关键技术,逐渐受到广泛关注。本文旨在深入探讨当前主流的...
2. 采用缓存技术,如Redis或Memcached,减少数据库查询,提高响应速度。 3. 应用层优化,如分库分表,减少单一数据库的压力。 4. 使用异步处理模型,如消息队列,处理非实时性需求的任务。 对于需要与其他系统进行...
包括客户端缓存、服务器端缓存(如HTTP反向代理缓存)、数据库缓存(如Memcached或Redis)和分布式缓存(如BigTable)。缓存策略的合理使用可以显著减少数据库访问,减轻服务器负载,加快页面加载速度。 4. 负载...
Memcached是一种高效的分布式内存对象缓存系统,用于缓存各种数据和对象,以减少数据库查询的次数,提升网站或应用程序的运行速度和性能。下面详细分析了Memcached的启动过程以及使用telnet命令进行交互时的常用命令...
同时,使用分布式缓存(如Redis或Memcached)可以跨服务器共享数据,减轻单个服务器的压力。 10. **持续集成和自动化测试**:定期进行性能测试,找出性能下降的原因,并通过持续集成确保每次代码更改后都进行性能...
此外,图片服务还涉及缓存技术,如Redis或Memcached,用于存储热门图片,减少对后端存储的压力。CDN(Content Delivery Network)网络也是一个常用策略,通过在全球部署边缘节点,让用户从最近的节点获取图片,降低...
除了文件缓存外,Yii2还支持多种缓存方式,比如使用数据库、Memcached、Redis等作为缓存存储。每种缓存方式都有其特定的配置参数和适用场景。比如数据库缓存,需要配置数据库连接信息,并且适用于数据变动不频繁的...
CommunityServer性能问题浅析 250 鸡肋式的多站点支持 250 内容数据的集中式存储 250 过于依赖缓存 250 CCS的雪上加霜 250 如何解决? 251 Digg PHP's Scalability and Performance 251 YouTube ...