
-
La logique d'utilisation du cache est très générale, en gros, le cache est vérifié en premier, et s'il y en a, il est renvoyé directement sans vérifier la base de données, puis placé dans le cache. Cette logique générale est dispersée dans tout le système, violant le principe de forte cohésion et de faible couplage. -
Le code de mise en cache et le code de logique métier sont profondément couplés, ce qui non seulement réduit la lisibilité du code, mais augmente également la complexité du système. -
Si vous souhaitez changer de cache (MDB->LDB) ou mettre à niveau l'API, tous les codes impliqués doivent être modifiés. -
Si vous souhaitez résoudre des problèmes courants tels que la pénétration du cache, la pénétration du cache, le cache en cascade, etc., vous devez les résoudre via le framework.

Lisez d'abord les données du cache et revenez directement s'il y a des données. Si aucune donnée n'est lue, lisez les données de la base de données, puis mettez à jour le cache une fois les données renvoyées.
Ce scénario est très courant dans le codage quotidien et est trop simple, mais le code réel est en effet très différent. Voici quelques exemples :
ސcriture traditionnelle
Quel que soit le cache utilisé, utilisez-le directement et intégrez-le dans le code métier. Ce type de code est quelque chose que je ne veux pas voir, que ce soit pour la révision du code ou lorsque les générations futures apprendront le code métier. La raison est très simple et n'a rien à voir avec les fonctions métier réelles. Je ne veux pas savoir ce qu'est le cache. vous utilisez ou comment vous codez le code du cache.
▐Une manière d'écrire plus avancée
Par rapport à la méthode d'écriture traditionnelle, afin de résoudre le problème de la mise en cache de divers formats de données (Liste, Carte, etc.) et de la sérialisation de divers objets (java, json), l'équipe peut encapsuler la mise en cache dans une API simple accessible à tous. . Il est plus facile à utiliser, mais le code est toujours intégré au code métier et n’a pas été supprimé.

▐Comment rédiger des annotations


Le cache Spring utilise un proxy dynamique pour traiter les opérations liées au cache dans la classe proxy, et appelle en même temps des méthodes dans la classe proxy, afin que le code qui exploite le cache et le code métier puissent être séparés, et lorsque la capacité de cache en a besoin à renforcer ultérieurement, il suffit de modifier simplement la méthode dans la classe proxy.
▐Répertoire de codes

▐Carte d' annotation
▐Exemple d'utilisation d'annotations
@Cacheable(value = "user_cache", unless = "#result == null")
public User getUserById(Long id) {
return userMapper.getUserById(id);
}
@CachePut(value = "user_cache", key = "#user.id", unless = "#result == null")
public User updateUser(User user) {
userMapper.updateUser(user);
return user;
}
@CacheEvict(value = "user_cache", key = "#id")
public void deleteUserById(Long id) {
userMapper.deleteUserById(id);
}
▐Analyse du programme
-
Cache multi-niveaux ; -
Le cache est actualisé régulièrement ; -
cache de liste ; -
Mécanisme de protection du cache cpp ; -
Nombre de caches.


Apprenez la solution Spring Cache Framework et implémentez un framework de cache personnalisé, qui non seulement conserve les avantages du framework Spring Cache, mais réalise également de nombreuses fonctionnalités manquantes du Spring Cache, telles que la panne du cache, la protection contre la pénétration du cache, le cache multi-niveaux, etc. .
▐Exemple de code d'annotation

▐Structure du projet


Avec l'aide de l'implémentation du cache Spring, nous construisons un cadre de cache personnalisé et étendons de nombreuses annotations, telles que le comptage, l'actualisation du cache, le cache de liste, le verrouillage distribué, le cache multiniveau, etc., qui réalise non seulement la séparation du code du cache et code métier, mais étend également le ressort La capacité de mise en cache améliore considérablement la lisibilité du code et réduit l'efficacité de la maintenance du code mis en cache.

La mission de l'équipe Tmall Automotive Technology est de découvrir la vie ultime des personnes et des voitures, de remodeler l'industrie automobile et d'être un gestionnaire automobile attentionné autour de vous. Ils construisent tous l'esprit des consommateurs pour la visualisation, l'achat et l'entretien des voitures en ligne, et la numérisation. et intégrer verticalement l'industrie automobile, et grâce aux percées du modèle, tirer parti de l'intégration des produits et des effets, améliorer l'efficacité de l'industrie et créer des dividendes pour l'industrie.
Technologie côté serveur | Qualité technique Algorithme des données
Cet article est partagé à partir du compte public WeChat - Big Taobao Technology (AlibabaMTT).
En cas d'infraction, veuillez contacter [email protected] pour suppression.
Cet article participe au « Plan de création de sources OSC ». Vous qui lisez, êtes invités à vous joindre et à partager ensemble.