CacheKV

简化缓存操作的PHP库 - 专注于实现"若无则从数据源获取并回填缓存"这一常见模式

// 一行代码搞定:检查缓存 → 未命中则获取数据 → 自动回填缓存
$data = kv_get('user.profile', ['id' => 123], function() {
    return getUserFromDatabase(123); // 只在缓存未命中时执行
});
"让每一行代码都散发着未来感的光芒。"

核心功能

🎯

自动回填缓存

缓存未命中时自动执行回调并缓存结果,简化开发流程

批量操作支持

支持批量获取缓存数据,减少网络请求次数

🔥

热点键管理

自动检测并延长热点数据的缓存时间

📊

统计监控

提供命中率统计、热点键分析等监控功能

🛡️

稳定可靠

基于Redis构建,异常处理完善

🔧

简单易用

简洁的API设计,快速集成到现有项目

使用示例

基础用法

// 基础用法 - 自动回填缓存
$user = kv_get('user.profile', ['id' => 123], function() {
    return getUserFromDatabase(123);
});

// 一行代码搞定:检查缓存 → 未命中则获取数据 → 自动回填缓存

批量获取

// 批量获取 - 避免N+1查询问题
$users = kv_get_multi('user.profile', [
    ['id' => 1], ['id' => 2], ['id' => 3]
], function($missedKeys) {
    $data = [];
    foreach ($missedKeys as $cacheKey) {
        $params = $cacheKey->getParams();
        $data[(string)$cacheKey] = getUserFromDatabase($params['id']);
    }
    return $data;
});

删除缓存

// 删除指定缓存
kv_delete('user.profile', ['id' => 123]);

// 按前缀删除(相当于按tag删除)
kv_delete_prefix('user.profile');

// 按完整前缀删除
kv_delete_full('user:profile:');

5分钟快速上手

1. 安装依赖

composer require asfop/cache-kv

2. 配置Redis连接

<?php
require_once 'vendor/autoload.php';
use Asfop\CacheKV\Core\CacheKVFactory;

// 配置Redis连接
CacheKVFactory::configure(function () {
    $redis = new Redis();
    $redis->connect('127.0.0.1', 6379);
    return $redis;
});

3. 开始使用

// 单个数据获取
$user = kv_get(
    'user.profile',
    ['id' => 123],
    function () {
        return $this->userService->getUserById(123);
    },
    3600
);

// 批量数据获取
$users = kv_get_multi(
    'user.profile',
    [['id' => 1], ['id' => 2], ['id' => 3]],
    function ($missedKeys) {
        $data = [];
        foreach ($missedKeys as $cacheKey) {
            $params = $cacheKey->getParams();
            $data[(string) $cacheKey] = $this->userService->getUserById($params['id']);
        }
        return $data;
    }
);

技术规格

PHP 7.0+
版本要求
asfop/cache-kv
Packagist包名
自动回填
核心特性