Skip to content

缓存开发指南

本文档介绍 DSPlatform 项目中缓存系统的使用方法。

概述

DSPlatform 使用基于 KvManager 的缓存系统,支持多种存储后端(File、Redis等),并提供了标签管理功能。

核心组件

KvManager

统一入口,提供缓存、锁、计数器、限流等功能:

php
use app\deshang\kv\KvManager;
use app\deshang\kv\keys\CacheKeyManager;

// 缓存操作
KvManager::cache()->set($key, $value, 3600, $tag);
KvManager::cache()->get($key, $default);
KvManager::cache()->delete($key);
KvManager::cache()->clear($tag);

CacheKeyManager

统一管理所有缓存键常量:

php
use app\deshang\kv\keys\CacheKeyManager;

// 使用缓存键
$cacheKey = sprintf(CacheKeyManager::GOODS_INFO_KEY, $goods_id);
$tag = CacheKeyManager::GOODS_TAG;

使用示例

基本缓存操作

php
use app\deshang\kv\KvManager;
use app\deshang\kv\keys\CacheKeyManager;

// 设置缓存
$cacheKey = sprintf(CacheKeyManager::STORE_INFO_KEY, $store_id);
KvManager::cache()->set($cacheKey, $storeInfo, 3600, CacheKeyManager::STORE_TAG);

// 获取缓存
$storeInfo = KvManager::cache()->get($cacheKey);

// 删除缓存
KvManager::cache()->delete($cacheKey);

// 清除标签缓存
KvManager::cache()->clear(CacheKeyManager::STORE_TAG);

完整示例

php
class StoreService
{
    public function getStoreInfo($storeId)
    {
        $cacheKey = sprintf(CacheKeyManager::STORE_INFO_KEY, $storeId);
        $storeInfo = KvManager::cache()->get($cacheKey);
        
        if (empty($storeInfo)) {
            $storeInfo = $this->getStoreFromDatabase($storeId);
            KvManager::cache()->set($cacheKey, $storeInfo, 7200, CacheKeyManager::STORE_TAG);
        }
        
        return $storeInfo;
    }
    
    public function updateStore($storeId, $data)
    {
        $this->updateStoreInDatabase($storeId, $data);
        
        // 清除相关缓存
        $cacheKey = sprintf(CacheKeyManager::STORE_INFO_KEY, $storeId);
        KvManager::cache()->delete($cacheKey);
        
        // 或清除所有店铺相关缓存
        KvManager::cache()->clear(CacheKeyManager::STORE_TAG);
    }
}

配置说明

环境变量

env
CACHE_ENABLED=true

缓存配置

config/cache.php 中配置缓存驱动:

php
return [
    'default' => 'file',
    'stores' => [
        'file' => [
            'type' => 'File',
            'path' => '',
            'prefix' => '',
            'expire' => 0,
        ],
        'redis' => [
            'type' => 'Redis',
            'host' => '127.0.0.1',
            'port' => 6379,
            'password' => '',
            'select' => 0,
        ],
    ],
];

最佳实践

  1. 使用 CacheKeyManager 管理键常量,避免硬编码
  2. 合理使用缓存标签,便于批量管理
  3. 根据数据更新频率设置 TTL:静态数据 24 小时,动态数据 1 小时
  4. 数据更新后及时清除相关缓存

相关链接


最后更新:2024-12-20
维护者:DSPlatform技术团队(德尚网络)

获取帮助

如果您在使用过程中遇到问题,可以通过以下方式获取帮助:

  • 官方网站https://www.csdeshang.com
  • 电话咨询:15364080101(微信同号)
  • QQ咨询:858761000
  • 邮箱咨询:858761000@qq.com
  • 工作时间:工作日 9:00-18:00
  • 微信咨询:扫码添加微信
微信二维码

版权所有 © 2014-至今 德尚网络