初步了解Memcached

2019-03-25 19:08|来源: 网络

1Memcache是什么

  Memcachedanga.com的一个项目,最早是为 LiveJournal 服务的,目前全世界不少人使用这个缓存项目来构建自己大负载的网站,来分担数据库的压力。

       它可以应对任意多个连接,使用非阻塞的网络IO。由于它的工作机制是在内存中开辟一块空间,然后建立一个HashTableMemcached自管理这些HashTable

 

为什么会有Memcachememcached两种名称?

其实Memcache是这个项目的名称,而memcached是它服务器端的主程序文件名,

   

Memcache官方网站:http://www.danga.com/memcached

2Memcache工作原理

首先 memcached 是以守护程序方式运行于一个或多个服务器中,随时接受客户端的连接操作,客户端可以由各种语言编写,目前已知的客户端 API 包括 Perl/PHP/Python/Ruby/Java/C#/C 等等。客户端在与 memcached 服务建立连接之后,接下来的事情就是存取对象了,每个被存取的对象都有一个唯一的标识符 key,存取操作均通过这个 key 进行,保存到 memcached 中的对象实际上是放置内存中的,并不是保存在 cache 文件中的,这也是为什么 memcached 能够如此高效快速的原因。注意,这些对象并不是持久的,服务停止之后,里边的数据就会丢失。

与许多 cache 工具类似,Memcached 的原理并不复杂。它采用了C/S的模式,在 server 端启动服务进程,在启动时可以指定监听的 ip,自己的端口号,所使用的内存大小等几个关键参数。一旦启动,服务就一直处于可用状态。Memcached 的目前版本是通过C实现,采用了单进程,单线程,异步I/O,基于事件 (event_based) 的服务方式.使用 libevent 作为事件通知实现。多个 Server 可以协同工作,但这些 Server 之间是没有任何通讯联系的,每个 Server 只是对自己的数据进行管理。Client 端通过指定 Server 端的 ip 地址(通过域名应该也可以)。需要缓存的对象或数据是以key->value 对的形式保存在Server端。key 的值通过 hash 进行转换,根据 hash 值把 value 传递到对应的具体的某个Server 上。当需要获取对象数据时,也根据 key 进行。首先对 key 进行 hash,通过获得的值可以确定它被保存在了哪台 Server 上,然后再向该 Server 发出请求。Client 端只需要知道保存 hash(key) 的值在哪台服务器上就可以了。

       其实说到底,memcache 的工作就是在专门的机器的内存里维护一张巨大的 hash 表,来存储经常被读写的一些数组与文件,从而极大的提高网站的运行效率。


本文链接:初步了解Memcached,转自:http://leeqianjun.iteye.com/blog/264010

相关问答

更多
  • memcached是个服务,就你Apache和nginx一样。你可以把memcached分离出来放到另一台新的服务器上,在新的这一台服务器上需要安装memcached,但不需要安装PHP。因为这台服务器上不运行PHP代码,你的PHP代码是放在WEB服务器上运行的。同要的mysql也一样,可以和WEB服务器分离开来。
  • 什么是memcached[2023-11-18]

    memcached是一种高性能的内存式缓存系统,通过将数据存储在内存中减少读取数据库的次数
  • Memcached就是在内存中维护一张巨大的hash表,通过自己的一套算法来维 护数据的操作,这个算法比较复杂,这里我们只做简单的介绍,对我们PHP程序员而言,重点掌握如何在项目如何使 Memcached技术. 本章节要求同学们深刻理解Memcached运行原理,并能够正确使用Memcached对网站优化提速。
  • rpm安装的才能查到,如果编译安装的就不能用rpm查到,你试试whereis memcached。或者root登录执行updatedb后,locate memcached
  • memcached for windows不会侦听具有相同实例的多个端口,您将需要该服务的多个实例才能使其在不同端口上作为服务运行。 为了实现这一点,您需要使用不同的机制来安装服务,而不是使用memcached -d install机制。 我们可以用sc来完成这个。 所有这些命令都需要从提升的命令提示符运行。 sc create "Memcached11211" binPath= "C:\memcached\memcached.exe -d runservice -p 11211" DisplayName ...
  • https://pypi.python.org/pypi/python-memcached/ : 该软件是memcached内存缓存守护进程的100%Python接口。 它是客户端软件,允许在一个或多个(可能是远程的)memcached服务器中存储值。 这意味着memcached作为独立的守护进程运行,独立于httpd ,并且您的代码可以像在数据库中一样将数据存储在该守护进程中。 实际上, memcached只不过是NoSQL数据库。 有关教程,请参阅Python中使用的python-memcache(me ...
  • 将symfony与memcached集成的简单方法是使用现有的bundle。 我使用leaseweb / memcache-bundle,它非常简单 - 只需按照以下说明操作即可: https : //github.com/LeaseWeb/LswMemcacheBundle 。 并记得首先启动memcached;) 然而,要将其与FOSUserBundle完全集成,但它确实支持php会话。 An easy way to integrate symfony with memcached is to use ...
  • 您的memcached客户端将为您完成所有分片。 更难的部分是知道你应该缓存什么,所以它实际上会对你的应用程序有利。 一般来说,你不想缓存数据库查询之类的东西。 您确实想要缓存您从代表应用程序中更高级别对象的数据库查询中生成的内容。 有一个好的API来存储和检索应用程序是一个好的开始。 你可能会发现memcached的故事是一个很好的介绍。 Your memcached client will do all of the sharding for you. The harder part is knowin ...
  • 我从来没有听说过你的花括号表示法,也找不到任何关于它的信息。 我不会说它不存在。 但是,最简单的操作方法是使用不同的分隔符,这些分隔符不能被误解为变量的一部分。 喜欢这个: set $memcached_key $cookie_devicetype:$request_uri; I have never heard of your curly bracket notation and cannot find any information about it. I won't say it doesn't e ...
  • 您没有在XAMPP PHP版本上安装Memcached扩展:如果您在UNIX环境中工作,您只需使用命令安装memcached // Step 1. $ sudo apt-get install memcached // Step 2. $ sudo apt-get install php5-memcached // Step 3. $ sudo /etc/init.d/apache2 restart 如果您使用Windows环境,则应使用Memcache扩展而不是Memcached。 在下面 ...