在Linux环境下,PHP的缓存技术其实是个老生常谈的话题,但每次聊起来都能发现一些新门道。今天咱们就把几种常见方案掰开揉碎了说说,从配置到代码,从单机到分布式,一次性讲透。

Linux环境下PHP如何使用缓存

  1. OPcache:最基础的翻跟斗
    OPcache是PHP内置的扩展,干的事就是把PHP脚本编译成字节码,然后扔进共享内存里。这样下次再请求同一个脚本时,就不用重新读取文件、重新编译了,省掉了文件系统和编译的开销。启用它很简单,在php.ini里加上或修改这几行配置就行:

    [opcache]
    zend_extension=opcache.so
    opcache.enable=1
    opcache.memory_consumption=128
    opcache.interned_strings_buffer=8
    opcache.max_accelerated_files=4000
    opcache.revalidate_freq=60

    这些数值可以根据你的服务器内存和项目规模灵活调整,比如内存吃紧可以适当降低memory_consumption

  2. Memcached:分布式缓存的经典选择
    Memcached是一个高性能的分布式内存缓存系统,常用来缓存数据库查询结果、会话数据这类明明很常用但每次查询都费劲的东西。要让它跑在PHP里,先装扩展:

    sudo apt-get install php-memcached

    然后在代码里这样用:

    $memcached = new Memcached();
    $memcached->addServer('localhost', 11211);
    $key = 'my_cache_key';
    $data = $memcached->get($key);
    if ($data === false) {
        // 缓存没命中,从数据库或其他地方获取数据
        $data = 'some_data';
        // 存入缓存,设定过期时间3600秒(1小时)
        $memcached->set($key, $data, 3600);
    }
    echo $data;

    注意addServer可以添加多个服务器,实现集群效果。

  3. Redis:全能型选手
    Redis和Memcached类似,但它更强大——支持更丰富的数据结构,还能做消息队列什么的。PHP里用Redis先装扩展:

    sudo apt-get install php-redis

    代码示例:

    $redis = new Redis();
    $redis->connect('127.0.0.1', 6379);
    $key = 'my_cache_key';
    $data = $redis->get($key);
    if ($data === false) {
        $data = 'some_data';
        $redis->set($key, $data, 3600); // 过期时间1小时
    }
    echo $data;

    Redis的持久化特性让它比Memcached更适合需要数据恢复的场景。

  4. 文件缓存:简单粗暴,单机够用
    如果应用没到分布式那一步,文件缓存是最省事的方案。直接用PHP的file_put_contents()file_get_contents()就能搞定——把序列化后的数据写到文件里,读取时再反序列化。不过要注意文件并发和磁盘I/O压力,小项目用用还行。

  5. APCu:本地内存缓存,轻量级选手
    APCu是APC的老版本升级而来,专门用来缓存用户数据,不需要额外服务,直接存PHP内存里。安装方式:

    sudo pecl install apcu

    然后在php.ini里加上extension=apcu.so。代码使用:

    $key = 'my_cache_key';
    $data = apcu_fetch($key);
    if ($data === false) {
        $data = 'some_data';
        apcu_store($key, $data, 3600); // 缓存1小时
    }
    echo $data;

    APCu的优势在于极低的延迟,因为数据就在当前PHP进程的内存里,但缺点是跨进程共享有限,且重启PHP后数据会丢失。

总结一下,选择哪种缓存方案,得看具体场景:大型应用、需要分布式支持,优先考虑Memcached或Redis;小型项目、单机部署,OPcache配合APCu或文件缓存就完全够用。性能、可用性、持久性和易用性之间,总得有个取舍——没有银弹,但有最适合你的那一把。

本文转载于:https://www.yisu.com/ask/40313658.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。