CentOS环境下ThinkPHP缓存策略探讨
在CentOS系统中部署ThinkPHP应用时,缓存策略是提升性能、降低数据库压力的核心手段。ThinkPHP支持多种缓存驱动(如文件、Redis、Memcached),并结合动态缓存、标签、过期策略等功能,需结合应用场景合理配置。
pecl install redis),配置项包括主机、端口、密码、数据库索引等。以Redis为例,配置步骤如下:
yum install redis,启动服务systemctl start redis并设置开机自启systemctl enable redis。pecl install redis安装,添加extension=redis.so到php.ini,重启PHP-FPM(systemctl restart php-fpm)。config/cache.php,设置默认驱动为Redis并填写连接信息:return [ 'default' => 'redis', 'stores' => [ 'redis' => [ 'type' => 'redis', 'host' => '127.0.0.1', 'port' => 6379, 'password' => '', // 若有密码需填写 'select' => 0, // Redis数据库索引 'timeout' => 0, // 连接超时时间(秒) 'prefix' => 'tp6:', // 缓存键前缀(避免键冲突) 'expire' => 3600, // 默认过期时间(秒) 'strategy' => 'LRU', // 缓存策略(LRU/LFU) ], ], ]; ThinkPHP提供Cache门面类简化缓存操作,常用方法如下:
Cache::set($key, $value, $expire),其中$key为缓存键(建议包含业务标识,如user_1表示用户ID为1的数据),$value为缓存值(可为数组、对象等),$expire为过期时间(秒,0表示永不过期)。Cache::get($key),若缓存存在则返回值,否则返回false。Cache::delete($key),删除指定键的缓存;Cache::clear()清空所有缓存(慎用,生产环境需谨慎)。cache助手函数或$this->cache方法,自动处理缓存逻辑。例如:// 自动缓存查询结果(若缓存不存在则执行查询并缓存) $data = cache('user_1', function() { return Db::name('user')->where('id', 1)->find(); }, 3600); // 设置带标签的缓存 Cache::tag(['user', 'order'])->set('user_1', $userData, 3600); // 清除指定标签的缓存 Cache::tag(['user'])->clear(); LRU(最近最少使用)、LFU(最不经常使用)等策略,可根据业务特点选择。例如,高频访问的小数据适合LFU,避免冷数据占用内存。View类的cache方法,减少视图渲染开销:// 在控制器中设置页面缓存(1小时) public function index() { return View::fetch('index', [], ['cache' => 3600]); } 3600 + rand(0, 300))。