15. 缓存(Cache)

一、安装

shell 复制代码
composer require hyperf/cache

二、配置

  • 文件:config/autoload/cache.php

    php 复制代码
    <?php
    
    return [
        'default' => [
            'driver' => Hyperf\Cache\Driver\RedisDriver::class,	// 缓存驱动,默认为 Redis
            'packer' => Hyperf\Codec\Packer\PhpSerializerPacker::class,	// 打包器
            'prefix' => 'c:',	// 缓存前缀
            'skip_cache_results' => [],		// 指定的结果不被缓存
        ],
    ];

三、使用 注解方式

1. 获取并生成缓存(#[Cacheable])

php 复制代码
<?php
namespace App\Service;

use App\Model\User;
use Hyperf\Cache\Annotation\Cacheable;

class CacheService
{
    #[Cacheable(prefix: 'user', value: "_#{id}", ttl: 900)]
    public function user($id)
    {
        $user = User::query()->find($id);

        if (!$user) {
            return null;
        }
        return $user->toArray();
    }
}
  • 调用
php 复制代码
<?php
namespace App\Controller;

use App\Service\CacheService;
use Hyperf\Di\Annotation\Inject;
use Hyperf\HttpServer\Annotation\AutoController;

#[AutoController]
class CacheController
{
    #[Inject]
    private CacheService $cacheService;

    public function index()
    {
        return $this->cacheService->user(1);
    }
}

2. 更新缓存(#[CachePut])

  • 同上

3. 删除缓存 (#[CacheEvict])

  • 同上
相关推荐
dal118网工任子仪2 小时前
92,[8] 攻防世界 web Web_php_wrong_nginx_config
开发语言·php
aaaweiaaaaaa4 小时前
php的使用及 phpstorm环境部署
android·web安全·网络安全·php·storm
java1234_小锋5 小时前
说说Redis的内存淘汰策略?
数据库·redis·缓存
2的n次方_9 小时前
【Redis】set 和 zset 类型的介绍和常用命令
数据库·redis·缓存
doubt。10 小时前
3.攻防世界Web_php_unserialize
网络·安全·web安全·网络安全·php·代码复审
赵渝强老师10 小时前
【赵渝强老师】Spark RDD的依赖关系和任务阶段
大数据·缓存·spark
doubt。13 小时前
1.攻防世界easyphp
网络·安全·web安全·网络安全·php·代码复审
桂月二二13 小时前
使用 Redis Streams 实现高性能消息队列
数据库·redis·缓存
doubt。1 天前
【BUUCTF】[羊城杯 2020]Blackcat1
网络·安全·web安全·网络安全·php
何似在人间5751 天前
Java的Integer缓存池
java·开发语言·缓存