V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
timsims
V2EX  ›  PHP

PHP 下可使用哪些“非分布式”内存缓存技术?

  •  
  •   timsims · Oct 12, 2015 · 3267 views
    This topic created in 3856 days ago, the information mentioned may be changed or developed.
    今天去面试,提到以前的项目使用 Redis ,面试官(他是做.net 的, 不懂 php )问既然你们项目没有用到分布式部署,为什么要用 Redis ,而不直接用本机的内存

    我说 Redis 就是和项目放在一台机上的,就是使用本机内存,他说 Redis 、 Memcached 这些是分布式的技术,即使在本机调用也会有消耗(忘了具体说法,我理解是通过端口会造成一定消耗)

    于是问题来了, 我猜.net 可以直接保存到内存里,但他的说法如果在 PHP 下是否有道理? PHP 下有哪些“非分布式”内存缓存技术可用?
    9 replies    2015-10-19 12:07:36 +08:00
    xuxu
        1
    xuxu  
       Oct 12, 2015
    APC 之类的
    timsims
        2
    timsims  
    OP
       Oct 12, 2015
    APC 都 deprecated 了
    chairuosen
        3
    chairuosen  
       Oct 12, 2015
    他不知道 PHP 是一次性的呀?
    之前项目用的 yac
    moro
        4
    moro  
       Oct 12, 2015
    PHP 有 opcache ,这个是代码缓存
    Redis 是内存数据库,有很多数据格式支持,缓存只是当 mamcached 用了。
    Memcached 分布式只是放在不同机器上,通过一定算法 hash key 找到指定机器而已,其实还是单机的。
    redis3 分布式是非集中式的,每个节点都可以转发。
    内存缓存已经不是 php 的范畴,只是 php 拿来用而已。
    jhdxr
        5
    jhdxr  
       Oct 13, 2015   ❤️ 1
    .net 之类的是可以常驻内存的,所以你可以直接申请一个变量当做缓存用。。。但是 php 是单次请求完了就挂了。。。所以一般内存缓存都是借助别的。。。
    zhengkai
        6
    zhengkai  
       Oct 13, 2015
    跟他讲第 22 条军规吧:

    如果你所有服务只用一台机器,说明你压根不需要在乎浪费的那一点点性能
    ryd994
        7
    ryd994  
       Oct 13, 2015 via Android
    他就不考虑可扩展性么?
    他就不知道 PHP 一次性么?
    还是说他只说希望你答 loopback 的开销所以应该用 sockfile ?
    nofeeling
        8
    nofeeling  
       Oct 15, 2015
    swoole_table
    slowgen
        9
    slowgen  
       Oct 19, 2015
    挑个 php 框架看下文档的缓存部分就可以知道 php 常用的缓存组件咯
    http://www.yiichina.com/doc/guide/2.0/caching-data
    用 redis 个人认为的好处就是管理方便,无论是 cli 还是 gui 工具都不错
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   800 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 49ms · UTC 21:55 · PVG 05:55 · LAX 14:55 · JFK 17:55
    ♥ Do have faith in what you're doing.