Memcache与 Memcached的

Luc*_*rdi 132 php memcached

可能重复:
使用Memcache vs Memcached with PHP

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

Mik*_*rov 136

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

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

  • @Mike,你解释了Memcache和Memcached之间的完美区别.它们在存储价值时都有非常基本的区别.Memcache主要将每个值都视为字符串,而Memcached将其存储为值的原始类型.竖起大拇指为您的答案! (21认同)
  • @Pacerier人会抱怨这些限制是否得到修复. (2认同)
  • @Jasen 如果这些限制得到解决,为什么人们会抱怨呢? (2认同)
  • 因为任何正在检查 `"FALSE"` 而现在发现 `FALSE` 的代码都会突然不起作用。PHP 不好,在保持兼容性方面,wordpress 强制他们破坏 mail() (2认同)

Mez*_*Mez 112

(部分从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库提供用于与memcached服务器通信的API.它还提供了一个会话处理程序(memcached).

有关libmemcached的信息,请访问» http://tangent.org/552/libmemcached.html.