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 ৪টি ড্রাইভার সমর্থন করে, fileredisarrayapcu

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');

提示
Key নাম PSR6 দ্বারা নিষিদ্ধ, {}()/\@: এর মধ্যে কোন একটি অক্ষর অন্তর্ভুক্ত করতে পারে না, তবে এই বিচার বর্তমানে ( symfony/cache 7.2.4) দ্বারা অস্থায়ীভাবে PHP ini কনফিগারেশন zend.assertions=-1 মাধ্যমে এড়ানো যেতে পারে।

অন্যান্য Cache কম্পোনেন্ট ব্যবহার করা

ThinkCache কম্পোনেন্ট ব্যবহার নির্দেশিকা 其它数据库