Cache缓存
webman/cache هو مكون التخزين المؤقت الذي تم تطويره بناءً على symfony/cache، ويدعم بيئات الاستدعاء والتجاهل، ويدعم تجمع الاتصالات.
注意
الدليل الحالي هو لإصدار webman v2، إذا كنت تستخدم إصدار webman v1، يرجى الاطلاع على دليل v1
安装
composer require -W webman/cache
示例
<?php
namespace app\controller;
use support\Request;
use support\Cache;
class UserController
{
public function db(Request $request)
{
$key = 'test_key';
Cache::set($key, rand());
return response(Cache::get($key));
}
}
配置文件位置
ملف التكوين يقع في config/cache.php
، إذا لم يكن موجودًا، يرجى إنشاؤه يدويًا.
配置文件内容
<?php
return [
'default' => 'file',
'stores' => [
'file' => [
'driver' => 'file',
'path' => runtime_path('cache')
],
'redis' => [
'driver' => 'redis',
'connection' => 'default'
],
'array' => [
'driver' => 'array'
],
'apcu' => [
'driver' => 'apcu'
]
]
];
stores.driver
يدعم 4 أنواع من المحركات، file، redis، array، apcu.
file 文件驱动
هذا هو المحرك الافتراضي، لا يعتمد على مكونات أخرى، ويدعم مشاركة بيانات التخزين المؤقت عبر العمليات، ولا يدعم مشاركة بيانات التخزين المؤقت عبر الخوادم المتعددة.
array 内存驱动
تخزين في الذاكرة، أداءه الأفضل، ولكنه سيستهلك الذاكرة، ولا يدعم مشاركة البيانات عبر العمليات أو الخوادم، ويفقد فعاليته بعد إعادة تشغيل العملية، وعادة ما يستخدم لمشاريع تحتوي على كميات صغيرة من البيانات المخبأة.
apcu 内存驱动
تخزين في الذاكرة، أداؤه يأتي بعد array، يدعم مشاركة بيانات التخزين المؤقت عبر العمليات، ولا يدعم مشاركة البيانات عبر الخوادم المتعددة، ويفقد فعاليته بعد إعادة تشغيل العملية، وعادة ما يستخدم لمشاريع تحتوي على كميات صغيرة من البيانات المخبأة.
يجب تثبيت وتفعيل APCu 扩展؛ يُنصح بعدم استخدامه في السيناريوهات التي تتطلب كتابة/حذف التخزين المؤقت بشكل متكرر، حيث سيؤدي ذلك إلى انخفاض كبير في الأداء.
redis 驱动
يعتمد على مكون webman/redis، ويدعم مشاركة بيانات التخزين المؤقت عبر العمليات والخوادم.
stores.redis.connection
stores.redis.connection
يتوافق مع المفتاح المقابل في config/redis.php
. عند استخدام redis، سيتم إعادة استخدام تكوين webman/redis
بما في ذلك تكوين تجمع الاتصالات.
يوصى بإضافة تكوين مستقل في config/redis.php
، على غرار قسم التخزين المؤقت كما يلي
<?php
return [
'default' => [
'password' => 'abc123',
'host' => '127.0.0.1',
'port' => 6379,
'database' => 0,
],
'cache' => [ // <==== 新增
'password' => 'abc123',
'host' => '127.0.0.1',
'port' => 6379,
'database' => 1,
'prefix' => 'webman_cache-',
]
];
ثم اضبط stores.redis.connection
على cache
، سيكون تكوين config/cache.php
النهائي كما يلي
<?php
return [
'default' => 'redis', // <====
'stores' => [
'file' => [
'driver' => 'file',
'path' => runtime_path('cache')
],
'redis' => [
'driver' => 'redis',
'connection' => 'cache' // <====
],
'array' => [
'driver' => 'array'
]
]
];
切换存储
يمكنك تغيير التخزين يدويًا باستخدام الكود أدناه لتستخدم محركات تخزين مختلفة، مثل
Cache::store('redis')->set('key', 'value');
Cache::store('array')->set('key', 'value');
提示
يعتمد اسم المفتاح على PSR6 الذي يحظر وجود أي من الحروف{}``()\/@:
ولكن يمكن تخطي هذا التحقق حتى الآن (فيsymfony/cache
7.2.4) من خلال تكوين PHP inizend.assertions=-1
.
使用其它Cache组件
ThinkCache مكون تخزين مؤقت مرجعي 其它数据库