Liigu sisu juurde

Vahemällu salvestamine

Queuety sisaldab vahemälukihti, mis vähendab andmebaasipäringuid sageli kasutatavates kohtades, nagu järjekorra peatamise kontrollid, kiiruspiirangu loendurid, töövoo oleku otsingud ja lukutoimingud. Vahemälu lähtestatakse automaatselt, kui kutsud välja Queuety::init().

Vahemälu liides

Kõik vahemälu taustsüsteemid rakendavad liidest Queuety\Contracts\Cache:

Meetod Tagastab Kirjeldus
get( string $key ) mixed Too väärtus. Tagastab null, kui väärtust ei leita või see on aegunud.
set( string $key, mixed $value, int $ttl = 0 ) void Salvesta väärtus. TTL 0 tähendab, et aegumine puudub.
delete( string $key ) void Eemalda väärtus.
has( string $key ) bool Kontrolli, kas võti on olemas ega ole aegunud.
add( string $key, mixed $value, int $ttl = 0 ) bool Määra väärtus ainult siis, kui võtit veel pole (aatomiline). Tagastab true, kui väärtus määrati.
flush() void Eemalda vahemälust kõik üksused. ApcuCache::flush() kutsub välja apcu_clear_cache(), mis tühjendab kõik serveri APCu kirjed, mitte ainult Queuety omad.

Sisseehitatud taustsüsteemid

MemoryCache (vaikimisi)

Queuety\Cache\MemoryCache on massiivipõhine protsessipõhine vahemälu. Üksused salvestatakse massiivi PHP ja lähevad protsessi lõppedes kaotsi. See on vaike-taustsüsteem, kui APCu pole saadaval.

See ei vaja laiendusi, sobib hästi ühe töötajaga juurutustele ja hoiab iga töötaja protsessi teistest eraldatuna.

ApcuCache

Queuety\Cache\ApcuCache kasutab laiendust APCu, et jagada mälu kõigi sama serveri PHP protsesside vahel. Kõigile võtmetele lisatakse automaatselt prefiks queuety:, et vältida kokkupõrkeid teiste rakendustega.

See taustsüsteem nõuab laiendust php-apcu, jagab vahemälukirjeid sama serveri töötajate vahel ja muudab add() toimingu apcu_add() abil tõeliselt aatomiliseks.

Automaatne tuvastamine

Queuety\Cache\CacheFactory valib automaatselt parima saadaoleva taustsüsteemi:

Kui apcu_store() on olemas ja apcu_enabled() tagastab true, kasutab Queuety väärtust ApcuCache. Vastasel juhul kasutatakse tagavarana MemoryCache. See toimub funktsiooni Queuety::init() sees, mistõttu pole vaikekäitumiseks lisaseadistusi vaja.

Mida vahemällu salvestatakse

Vahemälukihti kasutavad sisemiselt mitu alamsüsteemi:

Andmed Eesmärk
Järjekorra peatamise olek Väldib andmebaasipäringut igal töötaja tsükli iteratsioonil
Kiiruspiirangu loendurid Jälgivad käivituste arvu mälus, mitte andmebaasis
Töövoo olek Vähendab lugemisi mitmeastmelise töövoo edenemisel
Luku olek Kiirendab unikaalsete tööde ja mutex-vahevara luku olemasolu kontrollimist

TTL-i seadistamine

Vaikimisi on vahemälu TTL 5 sekundit. See kehtib järjekorra peatamise oleku ja kiiruspiirangu loendurite kohta; töövoo oleku ja oleku lugemisi hoitakse vahemälus kindla 2 sekundi vältel ning konstant seda ei muuda. Muuda vaikeväärtust konstandiga QUEUETY_CACHE_TTL failis wp-config.php:

PHP
define( 'QUEUETY_CACHE_TTL', 10 ); // 10 seconds

Lühem TTL tähendab sagedasemaid andmebaasipäringuid, kuid värskemaid andmeid. Pikem TTL vähendab andmebaasi koormust, kuid muudab andmed aegunumaks. Enamiku juurutuste jaoks on vaikeväärtus 5 sekundit hea tasakaal.

Kohandatud vahemälu taustsüsteem

Kohandatud vahemälu taustsüsteemi kasutamiseks (Redis, Memcached või mõni muu) rakenda liidest Contracts\Cache ja kutsu välja Queuety::set_cache() enne Queuety::init():

PHP
use Queuety\Contracts\Cache;
use Queuety\Queuety;

class RedisCache implements Cache {
    public function get( string $key ): mixed { /* ... */ }
    public function set( string $key, mixed $value, int $ttl = 0 ): void { /* ... */ }
    public function delete( string $key ): void { /* ... */ }
    public function has( string $key ): bool { /* ... */ }
    public function add( string $key, mixed $value, int $ttl = 0 ): bool { /* ... */ }
    public function flush(): void { /* ... */ }
}

// Set the cache before init() so all subsystems use it.
Queuety::set_cache( new RedisCache() );
Queuety::init( $connection );

Kui set_cache() kutsutakse välja enne init(), jäetakse tehase automaattuvastus täielikult vahele ja kasutatakse sinu kohandatud taustsüsteemi.

Vahemälule juurdepääs

Too aktiivne vahemälu eksemplar igal ajal:

PHP
$cache = Queuety::cache();

$cache->set( 'my_key', 'my_value', 60 );
$value = $cache->get( 'my_key' );

See tagastab parajasti aktiivse taustsüsteemi (MemoryCache, ApcuCache või sinu kohandatud teostuse).