一、认识memcached
1、为什么使用memcached
随着互联网的发展,传统关系型数据库开始出现瓶颈,很多方面不能满足我们的要求:例如:①对数据库的高并发读写;②对海量数据的处理;
2、memcached的特点
memcached是高性能的分布式内存缓存服务器,通过缓存数据库查询结果,减少数据库访问次数,以提高web应用的速度和扩展性。memcached有如下优点:①协议简单;②基于libevent的事件处理;③内置内存存储方式;④采用不相互通信的分布式。
3、memcached的缺点
memcached的存储对象并不是持久化的,服务停止之后,里面的数据就会丢失。
4、memcached的典型应用模型
为了提高性能,Memcached把数据存储到内存中。由于数据仅存在内存中,因此重启后数据丢失。另外,内存容量达到指定值后,就会使用LRU算法自动删除不使用的缓存。Memcached本身为了缓存而设计的服务器,因此没有过多考虑数据的持久化问题。
二、如何支持高并发
Memcached使用多路复用I/O模型(如epoll、select等)。多路复用I/O是一种消息通知模式,用户连接做好I/O准备后,系统会通知我们这个连接可以进行I/O操作,这样就不会阻塞在某个用户连接。因此,Memcached才能支持高并发。
此外,Memcached使用了多线程模式。在开启Memcached服务器时通过使用“-t”参数指定要开启的线程数。但并不是线程数越多越好,一般设置为CPU核心数,这样效率最高。
三、数据保存算法
Memcached默认只能存储不大于1MB的数据。因为Memcached在存储数据时使用Slab内存分配算法。使用这种算法可以减少生成内存碎片,提高内存使用效率等。
Slab分配算法的原理是:把固定大小(1MB)的内存分配为n小块,每一块(1MB)内存块称为一个slab页。每次向系统申请一个slab页,然后再通过分割算法把这个slab页分割成若干小块的chunk,然后把这些chunk分配给用户使用。chunk块的大小可以不同,但是最大的chunk块的大小就是一个slab分页大小,因此就是1MB,所以Memcached只能存储不大于1MB的数据。
四、淘汰数据方式
当Memcached使用内存大于设置的最大内存使用数时,为了腾出空间存放新的数据项,Memcached会启用LRU算法淘汰旧的数据项。当Memcached申请内存失败,就开始淘汰数据了。
淘汰规则是:从数据项列表尾部开始遍历,在列表中查找一个引用计数器为0的条目,该此条目释放掉。为什么会从尾部开始?因为Memcached会把刚刚访问过的条目放到列表头部,所以尾部的条目都是没有被访问过的(或者很少访问的),这就是LRU算法的精髓。
如果在条目列表中找不到引用计数器为0的条目,就查找一个3小时没有访问过的条目,把他释放。如果找不到,就返回null。
五、多线程模型
Memcached是一个多线程的缓存服务器程序。在Memcached内部,线程分为:
- 主线程:接受客户端连接,并把连接分配给工作线程处理。
- 工作线程:处理客户端连接的请求。
相关推荐
**缓存技术** 缓存技术在信息技术领域中扮演着至关重要的角色,特别是在性能优化和数据访问速度提升方面。它通过将频繁访问的数据暂时存储在快速...无论是软件开发还是系统架构设计,都需要对缓存有深入的认识和实践。
这一步涉及缓存架构设计,包括数据结构选择(如 Map)、缓存替换策略(如 FIFO、LRU 或 LFU)、缓存框架的使用和优化等。 **架构演变第五步:增加 WebServer** 随着访问量持续增长,单台 WebServer 可能无法承载...
Redis 的主要特点是其高速性能,支持数据持久化,能够将内存中的数据保存到磁盘,以便在系统重启后继续使用。此外,Redis 提供了多种数据结构,如字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)和...
- 缓存系统主要使用了Memcached。 - 存储层主要依赖于Mysql。 - 计数器功能由Redis提供。 - 队列任务则使用Redis作为队列系统。 - 搜索服务由Sphinx实现。 - 图片和视频的存储则依赖云服务提供商。 5. 极简化...
8. **缓存机制**:介绍框架内置的缓存机制,如文件缓存、Memcached、Redis等,以及如何配置和使用缓存策略。 9. **助手函数**:列出并解析各种内置的助手函数,这些函数可以简化常见的编程任务,提高开发效率。 10...
12. **性能优化**:缓存技术(如Memcached或Redis)、数据库索引优化、代码效率提升等都是保证网站高性能的关键。 13. **部署与维护**:熟悉Linux服务器环境、Apache或Nginx服务器配置、版本控制(如Git)以及故障...
4. PHP性能优化:掌握缓存技术,如APC、Memcached或Redis,以及代码优化技巧。 七、PHP框架应用 介绍一些流行的PHP框架,如Laravel、Symfony、Yii等,理解MVC模式,了解框架中的路由、控制器、模型、视图等概念。 ...
Redis作为缓存层的优势在于它支持多种数据结构,如字符串、列表、集合、哈希表等,这使得它比传统的缓存系统(如Memcached)更加灵活多样。 - **实现方法**: - 将频繁访问但变化不大的数据存储在Redis中。 - 设置...
Redis 是一款高性能的键值数据库,它以键值对的形式存储数据,同时也支持多种数据结构如列表、集合、哈希表等。Redis 的优势在于其内存操作和持久化能力,使其成为缓存和快速数据存储的理想选择。在本文中,我们将...
10. **缓存机制**:为了提高性能,论坛系统可能会采用缓存策略,如Redis或Memcached,缓存常用数据,减少数据库查询次数。 11. **API接口**:现代论坛系统可能需要与其他服务集成,如社交媒体分享、第三方登录等,...
7. **缓存策略**:为了提高系统性能,可能应用了缓存技术,如Redis或Memcached,缓存热门商品信息和用户会话,减少数据库压力。 8. **搜索引擎优化**:为了提升用户体验和搜索引擎排名,可能会实施SEO(Search ...
这可能涉及到PHP的内置缓存功能如APC,或是第三方库如Redis或Memcached。 10. **SEO友好**:WindForumsUTF8可能考虑了搜索引擎优化(SEO),包括静态化URL、元标签设置等,这些都可以从源码中学到。 通过研究...
9. **性能优化**:通过缓存策略、数据库优化、代码优化等方式提高系统性能,如使用 Memcached 或 Redis 进行数据缓存,减少数据库访问。 10. **响应式设计**:考虑到移动设备的使用,网站需具备响应式设计,能适应...
10. **实时数据库与缓存**:理解Redis、Memcached等内存数据库的作用,以及如何在实时数据处理和缓存场景中应用它们。 通过深入学习这些知识点,你可以具备构建、管理和维护高效数据库系统的技能。无论你是初学者...
理解如何使用缓存(如APC或Memcached)、减少数据库查询、优化代码结构和使用适当的算法,都能有效提升网站性能。 在“十天学会PHP”的第九天,你将通过实际案例深入实践这些概念,逐步建立起对PHP的系统认识。记得...
7. **缓存技术**:为了提高性能,可能会使用内存缓存(如Redis、Memcached)或页面缓存策略来减少数据库访问。这部分知识对于大型网站的性能优化非常重要。 8. **安全措施**:防止SQL注入、XSS攻击和CSRF等网络安全...
7. **性能优化**:考虑使用缓存技术(如Redis或Memcached)来减少数据库访问,提高系统响应速度。同时,合理的数据库索引和查询优化也是提升性能的关键。 8. **安全性**:除了基本的用户认证,还需要考虑XSS(跨站...
- **缓存机制**:如Varnish、Memcached等。 - **CDN**:内容分发网络可以将静态资源缓存到全球各地的节点上。 - **数据库优化**:采用主从复制、读写分离等技术。 ### 14. 用PHP写出显示客户端IP与服务器IP的代码...
9. **性能优化**:了解如何使用缓存技术(如APC或Memcached)、减少数据库查询、优化代码结构以提高程序运行效率。 通过这个实例,开发者可以深入理解PHP开发流程,从需求分析、设计、编码到测试,同时学习到如何...