温馨提示×

ubuntu上thinkphp缓存怎么设置

小樊
44
2025-11-22 23:45:42
栏目: 编程语言

Ubuntu 上 ThinkPHP 缓存设置指南

一 环境准备

  • 选择缓存驱动:常见为 File(默认)、RedisMemcached
  • 安装对应服务与扩展:
    • Redis:安装服务 sudo apt-get install redis-server,PHP 扩展 sudo apt-get install php-redis,用 php -m | grep redis 验证。
    • Memcached:安装服务 sudo apt-get install memcached,PHP 扩展 sudo apt-get install php-memcached(注意是 memcached 扩展,非 memcache)。
  • 框架侧配置路径:
    • ThinkPHP 6:在 config/cache.php 配置 defaultstores
    • ThinkPHP 5.1:在 application/config.phpcache 项中配置。
    • ThinkPHP 3.2:在 Common/Conf/config.php 中设置如 DATA_CACHE_TYPEMEMCACHE_HOST 等。

二 配置示例

  • ThinkPHP 6(Redis 示例)
    // config/cache.php
    return [
        'default' => 'redis',
        'stores'  => [
            'redis' => [
                'type'       => 'redis',
                'host'       => '127.0.0.1',
                'port'       => 6379,
                'password'   => '',         // 有密码请填写
                'select'     => 0,
                'timeout'    => 30,
                'expire'     => 3600,      // 默认有效期(秒)
                'persistent' => false,     // 是否长连接
            ],
        ],
    ];
    
  • ThinkPHP 5.1(Redis 示例)
    // application/config.php
    return [
        'cache' => [
            'type'   => 'redis',
            'host'   => '127.0.0.1',
            'port'   => 6379,
            'prefix' => 'think_',
            'expire' => 3600,
        ],
    ];
    
  • ThinkPHP 3.2(Memcache 示例)
    // Common/Conf/config.php
    return [
        'DATA_CACHE_TYPE' => 'Memcache',
        'MEMCACHE_HOST'  => 'tcp://10.20.50.2:11211', // 内网地址
        'DATA_CACHE_TIME' => 3600,
    ];
    
  • 多驱动与标签(通用)
    // 复合缓存:默认 file,按场景切换到 redis
    'type'    => 'complex',
    'default' => ['type' => 'file', 'path' => '../runtime/default'],
    'redis'   => ['type' => 'redis', 'host' => '127.0.0.1'],
    
    // 使用标签
    Cache::tag('tag1')->set('k1','v1',3600);
    Cache::tag('tag1')->clear();
    

以上示例涵盖 Redis/Memcached 在 Ubuntu 的常见配置方式,以及 TP5.1/TP6 的配置差异与多驱动用法。

三 常用操作

  • 基本用法(TP6 示例)
    use think\facade\Cache;
    
    Cache::set('name', 'ThinkPHP6', 3600);
    $val = Cache::get('name', '');
    if (Cache::has('name')) Cache::delete('name');
    Cache::clear();
    
  • 指定驱动与标签
    // 指定 Redis 存储
    Cache::store('redis')->set('name', 'value', 3600);
    
    // 标签批量清理
    Cache::tag('tag1')->set('k1','v1');
    Cache::tag('tag1')->clear();
    
  • 助手函数(TP5.1/TP6 均可用)
    // 设置/获取/删除
    cache('k', 'v', 600);
    $v = cache('k');
    cache('k', null);
    

以上 API 与助手函数适用于 TP5.1/TP6 的常见缓存读写与标签管理。

四 集群与运维建议

  • 多服务器/集群:优先使用 Redis/Memcached 等集中式缓存,避免文件缓存导致的 inode 耗尽节点间不一致;Memcached 启动时建议绑定 内网 IP 并限制访问来源,例如:memcached -d -m 1024 -p 11211 -l 10.20.50.2
  • 连接与容错:为 Redis/Memcached 配置合理 超时时间重试策略连接池;生产环境建议开启 持久化(如 Redis 的 RDB/AOF)与 监控告警
  • 键命名与隔离:统一 prefix,按业务/模块划分 数据库/前缀,避免冲突与误删。
  • 缓存穿透/击穿/雪崩:对热点数据设置 永不过期随机过期,结合 互斥锁/队列 重建,使用 布隆过滤器 过滤无效请求。

0