Memcache与Memcached的

时间:2009-12-01 10:16:52

标签: php memcached

  

可能重复:
  Using Memcache vs Memcached with PHP

有人能解释一下PHP环境中Memcache和Memcached的区别吗? 一个优于另一个的优点是什么? 您是否也可以建议用于在一种或另一种之间进行选择的标准?

2 个答案:

答案 0 :(得分:133)

他们并不完全相同。 Memcache较旧但有一些限制。我在我的应用程序中使用得很好,直到我意识到你无法在缓存中存储文字FALSE。从缓存返回的值FALSE与在缓存中找不到值时返回的FALSE相同。没有办法检查哪个是哪个。 Memcached有另外的方法(以及其他)Memcached::getResultCode,它会告诉你是否找到了密钥。

由于这个限制,我切换到在缓存中存储空数组而不是FALSE。我仍在使用Memcache,但我只是想把这些信息提供给那些决定的人。

答案 1 :(得分:110)

(晴Stolen from ServerFault

我认为两者在功能上是相同的,但它们只是有不同的作者,而且这个作者的名称比另一个更合适。


这是命名约定的快速背景(对于那些不熟悉的人),这解释了提问者的挫败感:对于许多* nix应用程序,执行后端工作的部分称为“守护程序”(想想“服务”)在Windows-land中,而接口或客户端应用程序是您用来控制或访问守护程序的。守护进程通常与客户端命名相同,并附加字母“d”。例如,“imap”将是连接到“imapd”守护程序的客户端。

当你阅读memcache模块的介绍时,memcache明确遵守这个命名约定(请注意这段摘录中memcache和memcached之间的区别):

  

Memcache模块提供了方便   程序性和面向对象   memcached的接口,非常高   有效的缓存守护进程,这是   特别设计减少   动态Web中的数据库负载   应用

     

Memcache模块还提供了一个   会话处理程序(memcache)。

     

有关memcached的更多信息可以   在»找到   http://www.danga.com/memcached/

这里的挫折是由PHP扩展的作者引起的,它被命名为memcached,因为它与名为memcached的实际守护进程共享同一个名称。另请注意,在memcached(php模块)的介绍中,它提到了libmemcached,它是模块用来访问memcached守护进程的共享库(或API):

  memcached是一款高性能的,   分布式内存对象缓存   系统,通用性质,但   旨在用于加速   动态Web应用程序   减轻数据库负载。

     

此扩展程序使用libmemcached   库提供API   与memcached服务器通信。   它还提供了一个会话处理程序   (分布式缓存)。

     

有关libmemcached的信息可以   发现在»   http://tangent.org/552/libmemcached.html