


Comment SpringBoot intègre Spring Cache pour implémenter la mise en cache Redis
1. Introduction
Spring Cache est un framework qui implémente la fonction de mise en cache basée sur les annotations. Il vous suffit d'ajouter une annotation pour réaliser la fonction de mise en cache.
Spring Cache fournit une couche d'abstraction et la couche inférieure peut changer différentes implémentations de cache.
Plus précisément, différentes technologies de mise en cache sont unifiées via l'interface CacheManager.
CacheManager est une interface abstraite pour diverses technologies de mise en cache fournies par Spring. Il s'agit de la technologie de mise en cache par défaut et elle est mise en cache dans Map. Cela signifie également que lorsque le service raccroche, les données mises en cache disparaîtront.
Différents CacheManagers doivent être implémentés pour différentes technologies de mise en cache
CacheManager | Description |
---|---|
EhCacheCacheManager | Utiliser EhCache comme technologie de mise en cache |
GuavaC ache Manager | utilise GuavaCache de Google comme technologie de mise en cache |
RedisCacheManager | Utilisez Redis comme technologie de mise en cache |
2 Annotations communes
Dans le projet Spring Boot, pour utiliser la technologie de mise en cache, il vous suffit d'importer le package de dépendances de la technologie de mise en cache appropriée dans le projet. et utilisez-le sur la classe de démarrage @EnableCaching
Activez simplement la prise en charge de la mise en cache. Par exemple, pour utiliser Redis comme technologie de mise en cache, il vous suffit d'importer les coordonnées maven de Spring data Redis. Les annotations couramment utilisées sont les suivantes :
Remarque | @@ENableCaching |
---|---|
@CachePut | |
@CacheEvict | |
2.1, @EnableCachingLa fonction principale de cette annotation est d'activer la fonction d'annotation de cache et de faire prendre effet aux autres annotations Spring Cache. L'utilisation est également très simple, il suffit de l'ajouter directement au-dessus de la classe de démarrage du projet. @Slf4j @SpringBootApplication @EnableCaching public class CacheDemoApplication { public static void main(String[] args) { SpringApplication.run(CacheDemoApplication.class, args); log.info("项目启动成功..."); } } Copier après la connexion 2.2, l'annotation @Cacheable
注解中的参数传递主要使用的是**SpEL(Spring Expression Language)**对数据进行获取传递,这有点类似于JSP中的EL表达式,常用方式如下几种:
来自Spring Cache源码:Spring Expression Language (SpEL) expression used for making the method 在
/** * @description 通过id获取用户信息 * @author xBaozi * @date 14:23 2022/7/3 **/ @Cacheable(value = "userCache", key = "#id", unless = "#result == null") @GetMapping("/{id}") public User getById(@PathVariable Long id) { User user = userService.getById(id); return user; } Copier après la connexion 2.3、@CachePut
/** * @description 新增用户信息并返回保存的信息 * @author xBaozi * @date 14:38 2022/7/3 **/ @CachePut(value = "userCache", key = "#user.id") @PostMapping public User save(User user) { userService.save(user); return user; } Copier après la connexion 2.4、@CacheEvict
/** * @description 更新用户信息 * @author xBaozi * @date 14:41 2022/7/3 **/ @CacheEvict(value = "userCache", key = "#result.id") @PutMapping public User update(User user) { userService.updateById(user); return user; } Copier après la connexion 3、使用Redis当作缓存产品因为 Spring 默认的缓存技术无法持久化保存缓存数据,即服务挂了缓存也挂了,因此就需要使用Redis进行操作(其实也是因为学习了Redis) 前面的SpringBoot整合Redis缓存验证码里面有记录着一些Redis的基本操作。 3.1、坐标导入导入 maven 坐标:spring-boot-starter-data-redis、spring-boot-starter-cache <!--Spring Data Redis--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <!--Spring Cache--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency> Copier après la connexion 3.2、yml配置
3.3、开启注解功能在启动类 @Cacheable pour les exigences Paramètres des propriétés : 🎜
@Slf4j @SpringBootApplication @ServletComponentScan @EnableCaching public class ReggieApplication { public static void main(String[] args) { SpringApplication.run(ReggieApplication.class, args); log.info("springBoot项目启动成功……"); } } Copier après la connexion @CachPut renvoie principalement la valeur de retour de la méthode Mettez-le dans le cache. SpEL est également utilisé pour obtenir des données ici. Les attributs couramment utilisés sont les suivants : 🎜
/** * @description 新增套餐信息 * @author xBaozi * @date 17:55 2022/5/13 * @param setmealDto 需要新增套餐的数据 **/ @CacheEvict(value = "setmealCache",allEntries = true) @PostMapping public Result<String> save(@RequestBody SetmealDto setmealDto) { log.info("套餐信息为{}", setmealDto); setmealService.saveWithDish(setmealDto); return Result.success("套餐" + setmealDto.getName() + "新增成功"); } Copier après la connexion @CacheeEvict met principalement en cache un ou plusieurs éléments de données Supprimez du cache et utilisez également SpEL pour obtenir des données. Les attributs couramment utilisés sont les suivants : 🎜
/** * @description 更新套餐信息并更新其关联的菜品 * @author xBaozi * @date 11:28 2022/5/14 * @param setmealDto 需要更新的套餐信息 **/ @CacheEvict(value = "setmealCache",allEntries = true) @PutMapping public Result<String> updateWithDish(@RequestBody SetmealDto setmealDto) { log.info(setmealDto.toString()); setmealService.updateWithDish(setmealDto); return Result.success("套餐修改成功"); } Copier après la connexion Copier après la connexion 3 Utilisez Redis comme produit de mise en cache🎜Parce que la technologie de mise en cache par défaut de Spring est. non durable Les données mises en cache seront enregistrées automatiquement, même si le service est en panne, le cache sera également en panne, vous devez donc utiliser Redis pour le fonctionnement (en fait, c'est aussi parce que vous avez appris Redis) 🎜🎜Le SpringBoot précédent Le code de vérification du cache d'intégration Redis enregistre certaines opérations de base de Redis. 🎜🎜3.1, importation de coordonnées🎜🎜Importer les coordonnées maven : spring-boot-starter-data-redis, spring-boot-starter-cache🎜rrreee🎜3.2, configuration yml🎜🎜spring :🎜3.3 Activez la fonction d'annotation🎜🎜Ajoutez l'annotation @EnableCaching à la classe de démarrage com/itheima/CacheDemoApplication.java pour activer la fonction d'annotation du cache🎜. rrreee🎜3.4. Utilisez @Cacheable🎜🎜Il convient de rappeler que lors de l'utilisation du cache, la valeur de retour doit implémenter l'interface de sérialisation Serialisable, sinon une erreur sera générée. 🎜🎜En effet, dans la base de données NoSql, il n'y a pas de structure de données correspondant à nos types de base Java, donc lors du stockage dans la base de données NoSql, nous devons sérialiser l'objet en même temps, nous devons faire attention à deux choses lors du réseau. transmission. Le SerialVersionUID des javabeans dans chaque application doit être cohérent, sinon la désérialisation ne peut pas être effectuée normalement. 🎜rrreee🎜3.5, en utilisant @CacheEvict🎜🎜Le nouvel attribut s'appelle allEntries, qui est un type booléen utilisé pour indiquer si tous les éléments du cache doivent être effacés. La valeur par défaut est false, ce qui signifie que ce n'est pas nécessaire. Si allEntries est défini sur true, Spring Cache ne prendra pas en compte la clé spécifiée. Parfois, il est plus efficace d'effacer et de mettre en cache tous les éléments en même temps plutôt que de les effacer un par un. 🎜/** * @description 更新套餐信息并更新其关联的菜品 * @author xBaozi * @date 11:28 2022/5/14 * @param setmealDto 需要更新的套餐信息 **/ @CacheEvict(value = "setmealCache",allEntries = true) @PutMapping public Result<String> updateWithDish(@RequestBody SetmealDto setmealDto) { log.info(setmealDto.toString()); setmealService.updateWithDish(setmealDto); return Result.success("套餐修改成功"); } Copier après la connexion Copier après la connexion 4、测试代码编写完成之后,重启工程,然后访问后台管理系统,对套餐数据进行新增以及删除,而后观察Redis中的数据发现写的代码是能正常跑到!成功! |
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds





Le mode Redis Cluster déploie les instances Redis sur plusieurs serveurs grâce à la rupture, à l'amélioration de l'évolutivité et de la disponibilité. Les étapes de construction sont les suivantes: Créez des instances de redis étranges avec différents ports; Créer 3 instances Sentinel, Moniteur Redis Instances et basculement; Configurer les fichiers de configuration Sentinel, ajouter des informations d'instance Redis de surveillance et des paramètres de basculement; Configurer les fichiers de configuration d'instance Redis, activer le mode de cluster et spécifier le chemin du fichier d'informations de cluster; Créer un fichier nœuds.conf, contenant des informations de chaque instance redis; Démarrez le cluster, exécutez la commande CREATE pour créer un cluster et spécifiez le nombre de répliques; Connectez-vous au cluster pour exécuter la commande d'informations de cluster pour vérifier l'état du cluster; faire

Comment effacer les données Redis: utilisez la commande flushall pour effacer toutes les valeurs de clé. Utilisez la commande flushdb pour effacer la valeur clé de la base de données actuellement sélectionnée. Utilisez SELECT pour commuter les bases de données, puis utilisez FlushDB pour effacer plusieurs bases de données. Utilisez la commande del pour supprimer une clé spécifique. Utilisez l'outil Redis-CLI pour effacer les données.

Pour lire une file d'attente à partir de Redis, vous devez obtenir le nom de la file d'attente, lire les éléments à l'aide de la commande LPOP et traiter la file d'attente vide. Les étapes spécifiques sont les suivantes: Obtenez le nom de la file d'attente: Nommez-le avec le préfixe de "Fitre:" tel que "Fitre: My-Quyue". Utilisez la commande LPOP: éjectez l'élément de la tête de la file d'attente et renvoyez sa valeur, telle que la file d'attente LPOP: My-Queue. Traitement des files d'attente vides: si la file d'attente est vide, LPOP renvoie NIL et vous pouvez vérifier si la file d'attente existe avant de lire l'élément.

L'utilisation de la directive Redis nécessite les étapes suivantes: Ouvrez le client Redis. Entrez la commande (Verbe Key Value). Fournit les paramètres requis (varie de l'instruction à l'instruction). Appuyez sur Entrée pour exécuter la commande. Redis renvoie une réponse indiquant le résultat de l'opération (généralement OK ou -err).

L'utilisation des opérations Redis pour verrouiller nécessite l'obtention du verrouillage via la commande setnx, puis en utilisant la commande Expire pour définir le temps d'expiration. Les étapes spécifiques sont les suivantes: (1) Utilisez la commande setnx pour essayer de définir une paire de valeurs de clé; (2) Utilisez la commande Expire pour définir le temps d'expiration du verrou; (3) Utilisez la commande del pour supprimer le verrouillage lorsque le verrouillage n'est plus nécessaire.

La meilleure façon de comprendre le code source redis est d'aller étape par étape: familiarisez-vous avec les bases de Redis. Sélectionnez un module ou une fonction spécifique comme point de départ. Commencez par le point d'entrée du module ou de la fonction et affichez le code ligne par ligne. Affichez le code via la chaîne d'appel de fonction. Familiez les structures de données sous-jacentes utilisées par Redis. Identifiez l'algorithme utilisé par Redis.

Utilisez l'outil de ligne de commande redis (Redis-CLI) pour gérer et utiliser Redis via les étapes suivantes: Connectez-vous au serveur, spécifiez l'adresse et le port. Envoyez des commandes au serveur à l'aide du nom et des paramètres de commande. Utilisez la commande d'aide pour afficher les informations d'aide pour une commande spécifique. Utilisez la commande QUIT pour quitter l'outil de ligne de commande.

Sur CentOS Systems, vous pouvez limiter le temps d'exécution des scripts LUA en modifiant les fichiers de configuration Redis ou en utilisant des commandes Redis pour empêcher les scripts malveillants de consommer trop de ressources. Méthode 1: Modifiez le fichier de configuration Redis et localisez le fichier de configuration Redis: le fichier de configuration redis est généralement situé dans /etc/redis/redis.conf. Edit Fichier de configuration: Ouvrez le fichier de configuration à l'aide d'un éditeur de texte (tel que VI ou NANO): Sudovi / etc / redis / redis.conf Définissez le délai d'exécution du script LUA: Ajouter ou modifier les lignes suivantes dans le fichier de configuration pour définir le temps d'exécution maximal du script LUA (unité: millisecondes)
