初始化
This commit is contained in:
200
src/think/Cache.php
Normal file
200
src/think/Cache.php
Normal file
@@ -0,0 +1,200 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2006~2025 http://thinkphp.cn All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: liu21st <liu21st@gmail.com>
|
||||
// +----------------------------------------------------------------------
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace think;
|
||||
|
||||
use DateInterval;
|
||||
use DateTimeInterface;
|
||||
use Psr\SimpleCache\CacheInterface;
|
||||
use think\cache\Driver;
|
||||
use think\cache\TagSet;
|
||||
use think\exception\InvalidArgumentException;
|
||||
use think\helper\Arr;
|
||||
|
||||
/**
|
||||
* 缓存管理类
|
||||
* @mixin Driver
|
||||
* @mixin \think\cache\driver\File
|
||||
*/
|
||||
class Cache extends Manager implements CacheInterface
|
||||
{
|
||||
|
||||
protected $namespace = '\\think\\cache\\driver\\';
|
||||
|
||||
/**
|
||||
* 默认驱动
|
||||
* @return string|null
|
||||
*/
|
||||
public function getDefaultDriver(): ?string
|
||||
{
|
||||
return $this->getConfig('default');
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取缓存配置
|
||||
* @access public
|
||||
* @param null|string $name 名称
|
||||
* @param mixed $default 默认值
|
||||
* @return mixed
|
||||
*/
|
||||
public function getConfig(?string $name = null, $default = null)
|
||||
{
|
||||
if (!is_null($name)) {
|
||||
return $this->app->config->get('cache.' . $name, $default);
|
||||
}
|
||||
|
||||
return $this->app->config->get('cache');
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取驱动配置
|
||||
* @param string $store
|
||||
* @param string $name
|
||||
* @param mixed $default
|
||||
* @return array
|
||||
*/
|
||||
public function getStoreConfig(string $store, ?string $name = null, $default = null)
|
||||
{
|
||||
if ($config = $this->getConfig("stores.{$store}")) {
|
||||
return Arr::get($config, $name, $default);
|
||||
}
|
||||
|
||||
throw new \InvalidArgumentException("Store [$store] not found.");
|
||||
}
|
||||
|
||||
protected function resolveType(string $name)
|
||||
{
|
||||
return $this->getStoreConfig($name, 'type', 'file');
|
||||
}
|
||||
|
||||
protected function resolveConfig(string $name)
|
||||
{
|
||||
return $this->getStoreConfig($name);
|
||||
}
|
||||
|
||||
/**
|
||||
* 连接或者切换缓存
|
||||
* @access public
|
||||
* @param string|null $name 连接配置名
|
||||
* @return Driver
|
||||
*/
|
||||
public function store(?string $name = null)
|
||||
{
|
||||
return $this->driver($name);
|
||||
}
|
||||
|
||||
/**
|
||||
* 清空缓冲池
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function clear(): bool
|
||||
{
|
||||
return $this->store()->clear();
|
||||
}
|
||||
|
||||
/**
|
||||
* 读取缓存
|
||||
* @access public
|
||||
* @param string $key 缓存变量名
|
||||
* @param mixed $default 默认值
|
||||
* @return mixed
|
||||
*/
|
||||
public function get($key, mixed $default = null): mixed
|
||||
{
|
||||
return $this->store()->get($key, $default);
|
||||
}
|
||||
|
||||
/**
|
||||
* 写入缓存
|
||||
* @access public
|
||||
* @param string $key 缓存变量名
|
||||
* @param mixed $value 存储数据
|
||||
* @param int|DateTimeInterface|DateInterval $ttl 有效时间 0为永久
|
||||
* @return bool
|
||||
*/
|
||||
public function set($key, $value, $ttl = null): bool
|
||||
{
|
||||
return $this->store()->set($key, $value, $ttl);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除缓存
|
||||
* @access public
|
||||
* @param string $key 缓存变量名
|
||||
* @return bool
|
||||
*/
|
||||
public function delete($key): bool
|
||||
{
|
||||
return $this->store()->delete($key);
|
||||
}
|
||||
|
||||
/**
|
||||
* 读取缓存
|
||||
* @access public
|
||||
* @param iterable $keys 缓存变量名
|
||||
* @param mixed $default 默认值
|
||||
* @return iterable
|
||||
* @throws InvalidArgumentException
|
||||
*/
|
||||
public function getMultiple($keys, $default = null): iterable
|
||||
{
|
||||
return $this->store()->getMultiple($keys, $default);
|
||||
}
|
||||
|
||||
/**
|
||||
* 写入缓存
|
||||
* @access public
|
||||
* @param iterable $values 缓存数据
|
||||
* @param null|int|\DateInterval $ttl 有效时间 0为永久
|
||||
* @return bool
|
||||
*/
|
||||
public function setMultiple($values, $ttl = null): bool
|
||||
{
|
||||
return $this->store()->setMultiple($values, $ttl);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除缓存
|
||||
* @access public
|
||||
* @param iterable $keys 缓存变量名
|
||||
* @return bool
|
||||
* @throws InvalidArgumentException
|
||||
*/
|
||||
public function deleteMultiple($keys): bool
|
||||
{
|
||||
return $this->store()->deleteMultiple($keys);
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断缓存是否存在
|
||||
* @access public
|
||||
* @param string $key 缓存变量名
|
||||
* @return bool
|
||||
*/
|
||||
public function has($key): bool
|
||||
{
|
||||
return $this->store()->has($key);
|
||||
}
|
||||
|
||||
/**
|
||||
* 缓存标签
|
||||
* @access public
|
||||
* @param string|array $name 标签名
|
||||
* @return TagSet
|
||||
*/
|
||||
public function tag($name)
|
||||
{
|
||||
return $this->store()->tag($name);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user