使用memcache的几个优点


最近在3个项目中都有用到memcache,这东东确实有出人意料的上佳表现,优点不少。

  • 稳定,几个月以来,一同装上去的apache已重启过多次,这期间memcache一直踏踏实实干活,一点都不需要中途加油。
  • 配置简单,那是相当的简单,几乎不用配置,一个命令行的守护进程跑下来,就可以不管了
  • 多机分布式存储,每个前端机都能匀出一些内存来跑memcache,这些内存加在一起,总大小也是相当的客观,能够应付足够多的缓存数据,如果开启了memcache的压缩选项MEMCACHE_COMPRESSED,存储量还能有进一步提升。
  • 速度快,这个论点需要数据支持,俺手头之前有一些不同数据量级下set/get的速度对比,但是这里不方便列出来

以上,俺认为memcache是前端缓存一个漂亮的解决方案


13 responses to “使用memcache的几个优点”

  1. 单机状态下memcache的速度并不快,因为每次都要建立连接,如果不考虑分布式,还是用xcache之类的速度更快。

  2. 两位都有误解,

    当php大量访问数据库对数读操作时,应用memcache会减少数据库的访问次数,大大提升php和数据库的运行效率,
    而xcache只是用来减少php重新编译的次数以减少系统资源的占用。

    两个软件应用的层次不一样。

  3. xcache不仅仅有着opcode的缓存功能,还提供了一些api用来保存php的变量,如下:

    mixed xcache_get(string name)
    bool xcache_set(string name, mixed value [, int ttl])
    bool xcache_isset(string name)
    bool xcache_unset(string name)
    int xcache_inc(string name [, int value [, int ttl]])
    int xcache_dec(string name [, int value [, int ttl]])

    我想david应该说的就是这类功能吧。我个人有在高负载的场合使用memcache来缓存db layer的东东,还有apc缓存php opcdoe,但是还没机会尝试xcache在这种场合下的性能,所以有待试验。

  4. 其实APC的功能比xcache强大一点,不仅有opcode级的缓存,还有类似memcache的数据/变量缓存,像 apc_store, apc_fetch 之类的接口做这些事情,也能够控制包括数据的有效时间等,不过一般适合缓存存储周期长,数据量小的数据。memcached比这个要强大的多,把apc和memcached结合使用是最好的。

  5. 错过了很多精彩讨论
    关于xcache的性能测试,可以参考这个,可能配置上不是很正确,所以导致测试结果有失准确。
    http://www.fcicq.net/wp/?p=319
    另外,我在试用xcache,却不知道怎么用它的api,以前测试过eacc的api,结果是不能用,可以写入,但无法读出,读的时候apache会挂掉,在两台服务器上测试结果均是如此。

  6. 我有点偏执,对于要求性能,却不需要集群的功能,我感觉memcache太慢,甚至不如直接的io操作。主要是socket链接的速度慢。因为我自己尝试写守护进程来完成一些后台操作,发现用socket链接守护进程效率不如直接io操作。

  7. 另外,xcache是国人参与开发的项目,也有很多不错的评价,所以要支持一下:)

  8. memcache有pconnect这个方法可以解决一点socket用时,另外一分支有tag_add/tag_delete两个方法,可以实现的功能更多了,xcache个人感觉比apc或其它同类本地cache效率要高~

  9. 看一些文章说xcache是可以和zend optimizer同时生效的,而apc不能,不过我疑惑的是xcache + zend optimizer和apc到底哪个效率更高一点呢?这个有待测试。

    至于memcache,它和xcache应用场景很不一样,所以不用比个孰优孰劣。

Leave a Reply

Your email address will not be published. Required fields are marked *