Je dois implémenter le cache pour les requêtes SQL. Disons que nous avons SELECT id,aa,bb FROM table1 WHERE aa>1 and bb=12;
- nous voulons qu'il soit mis en cache. En outre, il peut être SELECT id,aa,bb FROM table1 WHERE aa>25 and bb=11;
ou SELECT id,aa,bb FROM table2;
bien sûr. Ce n'est pas grave - la question est de savoir comment expirer mieux les valeurs de cache. Sur les mises à jour Disons, nous avons ajouté une nouvelle ligne avec INSERT ...
ou mis à jour les données existantes avec UPDATE ...
. Nous devons expirer tout le cache qui avait des valeurs de SELECT
, car ils ne sont peut-être plus précis.Mise en œuvre pour la mise en cache des requêtes
Comment faire cela mieux?
Dans le cas le plus simple - nous utilisons toute la clé de requête "Requête SQL" dans le cache. Mais au moment de INSERT
/UPDATE
nous n'avons aucune idée quelles requêtes expirer (quelles clés?)
C'était mon idée initiale - il y a certains inconvénients. - Comme lorsque deux serveurs tentent de modifier en même temps la «liste des clés de cache» (le détenteur), une clé de cache peut être facilement perdue. Cependant, il semble être un petit prix à payer. – alexeypro
C'est un très bon point. Je n'ai pas encore rencontré de problèmes, mais ce serait possible. Jusqu'à présent, dans les cas où j'ai dû le faire manuellement, les données ne changent pas si souvent. –