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:
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():
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:
$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).