zoukankan      html  css  js  c++  java
  • APC 和 Memcache 有什么区别,哪个更好效率更高?

    APC有2个功能
    1 opcode (和eAccelerator一样)
    2 key-value缓存

    memcache 只有一个功能
    key-value缓存
    memcache 比APC好的地方是可以多机共享

    作为 key-value缓存速度上, APC > memcache
    不过访问量小的话用memcache 也不会感觉慢到哪里,考虑到扩展性,直接用memcache吧
    除非你懒到不想编译和启动并维护memcache

    APC是PHP的一个扩展,会加载在PHP的进程中,除了可以将PHP代码解释成OPCode保存在内存中之外,还能在PHP的进程之间使用共享内存(系统内核的数据结构)来保存数据,而且完全透明

    而Memcached是一个外部的服务,要通过tcp或udp的网络协议来共享/缓存数据

    Memcached好处是可以在多台机器之间共享、缓存数据,或者是与其他非php应用共享数据,但由于使用网络协议进行交互,而且在交互过程中需要对php对象进行序列化、反序列化等,延迟较直接集成在PHP进程中的APC大很多

    Facebook同时使用了APC和Memcache作了两层缓存

    APC更多时候用作Opcode Cache, 而MemCache是用作CotentCache. 这个上面都回答过了.
    我补充一点, APC用作Content Cache的时候, 它是单机Cache. 而MemCache可以实现多机共享. 所以类似一些Session共享问题, 就只能用类似MemCache的缓存.
    另外因为设计问题, 如果你使用APC缓存易变的内容, 可能会造成缓存内容不同步.(不知道后续修复了没, 我大概有1年多没有关注过APC的Upgrade了)

    APC和Memcache都是基于内存的缓存方案,它们之间最大的区别就是APC用于单机内存缓存,而Memcache可以架构分布式缓存。
    
    APC不能用于频繁写,主要测试读方面性能,这点上是memcached望尘莫及的。
    APC的性能会随着数据存量的增加而下降,这点Memcached会更占优势
    单机内存作为缓存够用(纯内存)的时候,apc的性能是好的。因为Memcache还需要维护通信进程
    apc是mmap, 而memcache使用的是纯内存。
    而memcached本身的设计就是为了分布式应用,大规模内存缓存,集群,易扩展等.
    
    所以综合以上的说明,哪个效率更高还真不好说。
    

    参考:http://www.zhihu.com/question/20029737

  • 相关阅读:
    WF4 工作流事件顺序
    审批工作流系统预览
    系统框架最终集大成之——目录
    11.34 为什么框架没有提供代码设计器或代码生成器?
    11.35 如何编写自动任务?
    11.37 如何在系统中记录日志?
    11.38 CastleActiveRecord中如何保证多线程并发操作的安全与成功?
    关于数据库移植方面的记录
    十二、 结语
    datagridview某列编辑时显示为大写
  • 原文地址:https://www.cnblogs.com/Alight/p/3122941.html
Copyright © 2011-2022 走看看