`

memcache原理

 
阅读更多

Consistent Hashing原理,Consistent Hashing如下所示:首先求出memcached服务器(节点)的哈希值, 并将其配置到0~232的圆(continuum)上。 然后用同样的方法求出存储数据的键的哈希值,并映射到圆上。然后从数据映射到的位置开始顺时针查找,将数据保存到找到的第一个服务器上。 如果超过232仍然找不到服务器,就会保存到第一台memcached服务器上。

memcached是怎么工作的?

Memcached的高性能源于两阶段哈希(two-stage hash)结构。Memcached就像一个巨大的、存储了很多<key,value>对的哈希表。通过key,可以存储或查询任意的数据。 客户端

可以把数据存储在多台memcached上。当查询数据时,客户端首先参考节点列表计算出key的哈希值(阶段一哈希),进而选中一个节点;客户端将请求发送给选中的节点,然后

memcached节点通过一个内部的哈希算法(阶段二哈希),查找真正的数据(item)并返回给客户端。从实现的角度看,memcached是一个非阻塞的、基于事件的服务器程序。

memcached和MySQL的query cache相比,有什么优缺点?

缺点:

1)相比MySQL的query cache,把memcached引入应用中需要不少的工作量。MySQL的query cache,可以自动地缓存SQL查询的结果,被缓存的SQL查询可以被反复、快速的执行。

优点:

1)当修改表时,MySQL的query cache会立刻被刷新(flush)。当写操作很频繁时,MySQL的query cache会经常让所有缓存数据都失效。

2)在多核CPU上,MySQL的query cache会遇到扩展问题(scalability issues)。在多核CPU上,query cache会增加一个全局锁(global lock), 由于需要刷新更多的缓存数据,速度

会变得更慢。

3)在MySQL的query cache中,是不能存储任意的数据的(只能是SQL查询结果)。利用memcached,我们可以搭建出各种高效的缓存。比如,可以执行多个独立的查询,构建出一个

用户对象(user object),然后将用户对象缓存到memcached中。而query cache是SQL语句级别的,不可能做到这一点。在小的网站中,query cache会有所帮助,但随着网站规模的

增加,query cache的弊将大于利。

4)query cache能够利用的内存容量受到MySQL服务器空闲内存空间的限制。给数据库服务器增加更多的内存来缓存数据,固然是很好的。但是,有了memcached,只要您有空闲的内

存,都可以用来增加memcached集群的规模,然后您就可以缓存更多的数据。

memcached和服务器的local cache(比如PHP的APC、mmap文件等)相比,有什么优缺点?

1)首先,local cache面临着严重的内存限制,能够利用的内存容量受到(单台)服务器空闲内存空间的限制。

2)local cache有一点比memcached和query cache都要好,那就是它不但可以存储任意的数据,而且没有网络存取的延迟。因此,local cache的数据查询更快。考虑把highly

common的数据放在local cache中吧。如果每个页面都需要加载一些数量较少的数据,可以考虑把它们放在local cached。

3)local cache缺少集体失效(group invalidation)的特性。在memcached集群中,删除或更新一个key会让所有的观察者觉察到。但是在local cache中, 我们只能通知所有的服务器

刷新cache(很慢,不具扩展性)或者仅仅依赖缓存超时失效机制。

memcached的cache机制是怎样的?

Memcached主要的cache机制是LRU(最近最少用)算法+超时失效。当您存数据到memcached中,可以指定该数据在缓存中可以呆多久Which is forever, or some time in the

future。如果memcached的内存不够用了,过期的slabs会优先被替换,接着就轮到最老的未被使用的slabs。

分享到:
评论

相关推荐

    Memcache原理及实现

    【Memcache原理及实现】 Memcache,全称Memcached,是一种高性能的分布式内存对象缓存系统,主要用于减轻数据库的负载。它将数据存储在内存中,以键值对的形式提供快速访问,尤其适用于高并发场景。Memcache最初由...

    Java开发中的Memcache原理及实现

    ### Java开发中的Memcache原理及实现 #### 一、概述 **1. Memcache是什么** Memcache(Memcached)是一种高性能、分布式内存对象缓存系统,最初由Danga Interactive为LiveJournal开发,但很快被很多其他网站采用...

    Java开发中的Memcache原理及实现(带书签)

    安装好Memcache之后,在Java应用中实现Memcache原理及实现,通常需要进行如下步骤: 1. 引入Memcached客户端库到Java项目中。常见的客户端库包括memcachedclientforjava。 2. 初始化客户端连接。客户端连接到...

    Java开发中的Memcache原理及实现以及Redis的入门

    **Java开发中的Memcache原理及实现** Memcache是一款高性能、分布式内存对象缓存系统,它被广泛用于提高Web应用程序的性能。Memcache的工作原理基于内存存储,它将数据以键值对的形式存储,并通过网络协议提供服务...

    Java开发中的Memcache原理及实现.zip

    Java开发中的Memcached原理及实现主要涉及分布式缓存系统、Java与Memcached的接口操作以及在实际项目中的应用。Memcached是一种高性能、分布式内存对象缓存系统,它能够减轻数据库的负载,提高Web应用程序的响应速度...

    【汇总】Memcache

    在本文中,我们将深入探讨Memcache的核心原理、功能、使用场景以及常见操作。 ### 一、Memcache简介 Memcache最初由Danga Interactive公司开发,现已成为开源项目,被许多大型网站如Facebook、Twitter等采用。它的...

    MemCache开发说明文档

    这部分会详细介绍MemCache的基本概念、工作原理及其在高流量网站中解决性能问题的关键作用。 **第 4 章 技术预研目标** 4.1 设定预研的具体目标,例如熟悉MemCache的架构、安装过程、客户端开发以及优化策略等。 *...

    memcache win7 64位 安装文件

    首先,我们要理解`memcache`的工作原理。它是一个基于内存的键值存储服务,不持久化数据,因此适用于存储非关键性的临时数据。当Web应用程序需要访问数据时,会首先查找缓存中的数据,如果找到则直接返回,无需查询...

    Memcache 1.2.6 for Windows

    1. **工作原理**:Memcache基于键值对(key-value)存储,将数据存储在内存中,避免了传统数据库的磁盘I/O操作,从而大大提高了数据读取速度。当请求到达时,首先检查数据是否存在于缓存中,如果存在,则直接返回,...

    memcache 5.3.3

    1. **工作原理** Memcache 采用键值对(Key-Value)存储模式,用户可以将任意字符串(key)与任意类型的数据(value)关联。当应用程序需要数据时,首先尝试从 Memcache 中查找,如果找到则直接返回,否则才去...

    Memcache缓存技术,Memcache配置说明及其文件,PHP5.2.6版本内存缓存技术配置

    首先,理解Memcache的基本原理至关重要。Memcache的工作机制是在内存中存储数据,当应用程序需要访问数据时,它会首先检查这些数据是否已经存在于Memcache中。如果存在,就直接从缓存中获取,避免了与数据库的交互,...

    memcache监控工具

    本文将深入探讨Memcache监控工具的原理、功能以及如何利用这些工具对内存中的Memcache进行有效监控。 1. **监控的重要性** - **性能优化**:通过监控Memcache的命中率、内存使用情况和请求延迟,可以发现潜在的...

    MemCache对象缓存应用

    总之,“MemCache对象缓存应用”这个主题涵盖的内容广泛,包括 MemCache的基本概念、工作原理、应用场景、源码解析以及工具使用等,对于理解和优化Web应用性能具有重要意义。通过深入学习,开发者可以更有效地利用...

    php之Memcache的使用

    学习和使用`Memcache-20151006.doc`和`Memcached 原理和使用详解.pdf`文档,将有助于深入理解Memcache的工作原理和最佳实践。同时,通过`代码.zip`中的示例代码,可以更直观地了解Memcache在实际项目中的应用。

Global site tag (gtag.js) - Google Analytics