【Yii2】使用Cache缓存提高性能

目录

1.配置缓存组件:

2.使用缓存

3.一个方法示例:


Yii2 使用 Cache 缓存可以提高应用程序的性能,减轻服务器负担。Yii2 提供了多种缓存方法,如 MemCache、APC、Redis 等。这里以 Redis为例,介绍如何在 Yii2 中使用缓存。

1.配置缓存组件:


config/main.phpconfig/main-local.php 文件中配置 cache 组件:

php 复制代码
<?php
use yii\helpers\ArrayHelper;
$config = [
    'components' => [
        'cache' => [
            'class' => 'yii\redis\Cache',
            'keyPrefix' => 'CSNcache-',
            'redis' => [
                'hostname' => '127.0.0.1',
                'port' => 6379,
                'database' => 0,
            ],
        ],
        'redis' => [
            'class' => 'yii\redis\Connection',
            'hostname' => '127.0.0.1',
            'port' => 6379,
            'database' => 13,
        ],
    ],
];

return $config;

2.使用缓存


在 Yii2 中,可以使用 Yii::$app->cache 访问缓存组件。以下是一些常用的缓存操作:

  • 添加缓存:

    php 复制代码
    $data = 'some data';
    Yii::$app->cache->set('key', $data, 3600); // 缓存时间为 3600 秒
  • 获取缓存:

    php 复制代码
    $data = Yii::$app->cache->get('key');
    if ($data === false) {
        // 缓存不存在,需要重新生成数据
        $data = 'some data';
        Yii::$app->cache->set('key', $data, 3600);
    }
  • 删除缓存:

    php 复制代码
    Yii::$app->cache->delete('key');
  • 清空缓存:

    php 复制代码
    Yii::$app->cache->flush();

注意:在实际使用中,为了避免缓存雪崩等问题,建议在缓存操作时加锁,使用 Yii::$app->cache->mutex 对象提供的方法实现。

3.一个方法示例:


php 复制代码
        // 缓存
        $cache = Yii::$app->cache;
        $cacheKey = 'cache_key';
        $list = $cache->get($cacheKey);
        if($list ){
            return $this->responseJson(0, ['list ' => $list ], '查询成功');
        }

        // 查询
        $data = ...
        $cache->set($cacheKey, $data, 60);
        return $this->responseJson(0, $data, '查询成功!');
相关推荐
Q_Q51100828520 小时前
python+uniapp基于微信小程序团购系统
spring boot·python·微信小程序·django·uni-app·node.js·php
2401_837088501 天前
Redis通用命令
数据库·redis·缓存
来旺1 天前
互联网大厂Java面试全解析及三轮问答专项
java·数据库·spring boot·安全·缓存·微服务·面试
catchadmin1 天前
PHP8.5 的新 URI 扩展
开发语言·后端·php
摇滚侠1 天前
Spring Boot 3零基础教程,WEB 开发 HTTP 缓存机制 笔记29
spring boot·笔记·缓存
cr7xin1 天前
基于Session和Redis实现短信验证码登录
数据库·redis·缓存
G佳伟1 天前
yii2添加新的modules完为什么访问的时候报错404
php
亿坊电商2 天前
在PHP框架里如何进行数据库连接?
数据库·oracle·php
Q_Q5110082852 天前
python基于web的汽车班车车票管理系统/火车票预订系统/高铁预定系统 可在线选座
spring boot·python·django·flask·node.js·汽车·php
WordPress学习笔记2 天前
安装WordPress时没生成wp-config.php的解决方法
php·wp-config