Table des matières
2. Introduction
3. Configuration préliminaire
3.1. Importation de coordonnées
3.2、配置文件
3.3、配置类
Maison base de données Redis Comment SpringBoot intègre le code de vérification du cache Redis

Comment SpringBoot intègre le code de vérification du cache Redis

May 27, 2023 pm 09:16 PM
redis springboot

1. Introduction

Redis est un magasin de structures de données en mémoire open source (sous licence BSD), utilisé comme base de données, cache et courtier de messages.

Traduction : Redis est un système de stockage de structures de données en mémoire open source. , il peut être utilisé comme : base de données, cache et middleware de messages.

Redis est une base de données clé-valeur open source haute performance développée en langage C. Les données officiellement fournies peuvent atteindre **100 000+** QPS.

QPS (Requêtes par seconde), le nombre de requêtes par seconde. (Encyclopédie Baidu)

Il stocke un riche ensemble de types de valeurs et est également appelé base de données NoSQL structurée.

NoSQL (Not only SQL), pas seulement SQL, fait référence aux bases de données non relationnelles en général.

La base de données NoSQL n'est pas destinée à remplacer les bases de données relationnelles, mais à les compléter.

Base de données relationnelle (SGBDR)

  • MySQL

  • Oracle

  • DB2

  • SQL Server

Base de données non relationnelle (NoSQL)

  • Redis

  • Mongo db

  • MemCached

Scénario d'application Redis

  • caching

  • file d'attente des tâches

  • file d'attente des messages

  • verrouillage distribué

2. Introduction

Officiellement recommandé par Reddis Il existe trois types de clients Java : Jedis, Lettuce et Redisson.

Spring intègre le client Redis et fournit Spring Data Redis.

Le Starter correspondant est également fourni dans le projet Spring Boot, à savoir spring-boot-starter-data-redis.

Spring Data Redis est utilisé directement ici, et le processus de téléchargement et d'installation de Redis n'est pas affiché.

3. Configuration préliminaire

3.1. Importation de coordonnées

Après avoir créé le projet Spring Boot, ajoutez les coordonnées dépendantes de spring-boot-start-data-redis dans pom.xmlspring-boot-start-data-redis的依赖坐标

<!--Spring Data Redis-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
Copier après la connexion

3.2、配置文件

这里忽略了其他的配置如MySQL这些,只突出Redis的配置信息

spring:
# Redis配置
redis:
host: localhost
port: 6379
# 根据自己设置的密码决定
password: 123456
# 操作0号数据库,默认有16个数据库
database: 0
jedis:
pool:
max-active: 8 # 最大连接数
max-wait: 1ms # 连接池最大阻塞等待时间
max-idle: 4 # 连接池中的最大空闲连接
min-idle: 0 # 连接池中的最小空闲连接

3.3、配置类

使用专门的客户端接口操作,将 Redis 整合到 Spring Boot 中。这里采用的是 RedisTemplate 工具类,该工具类由 SpringBoot 框架提供。

RedisTemplate 在处理 key 和 value 时,会对其进行序列化操作,这就会导致一些问题。

比如:输入的 key 值是 city,但 redis 获得到的 key 值却是 xac]xedx00x05tx00x04city

/**
 * @classname RedisConfig
 * @description Redis配置类,更换key的默认序列化器
 * @author xBaozi
 * @date 19:04 2022/7/2
 **/
@Configuration
public class RedisConfig extends CachingConfigurerSupport {
    @Bean
    public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
        RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setHashKeySerializer(new StringRedisSerializer());
        redisTemplate.setConnectionFactory(connectionFactory);
        return redisTemplate;
    }
}
Copier après la connexion

3.2. . Fichier de configuration

Les autres configurations telles que MySQL sont ignorées ici, et seules les informations de configuration de Redis sont mises en évidence

spring :
# Configuration Redis
redis :
hôte : localhost < br/> Port : 6379
# Déterminer en fonction du mot de passe que vous avez défini
Mot de passe : 123456
# Utiliser la base de données n° 0, il y a 16 bases de données par défaut
Base de données : 0
jedis :
pool :
max-active : 8 # Nombre maximum de connexions
max-wait : 1ms # Temps d'attente maximum de blocage du pool de connexions
max- ralenti : 4 # Pool de connexions La connexion inactive maximale
        min-idle : 0   # La connexion inactive minimale dans le pool de connexions

3.3. La classe de configuration

utilise des opérations d'interface client spécialisées pour intégrer Redis dans Démarrage de printemps. La classe d'outils RedisTemplate est utilisée ici, qui est fournie par le framework SpringBoot.

RedisTemplate sérialisera la clé et la valeur lors de leur traitement, ce qui entraînera certains problèmes.

Comment SpringBoot intègre le code de vérification du cache RedisPar exemple : la valeur de la clé d'entrée est city, mais la valeur de la clé obtenue par redis est xac]xedx00x05tx00x04city.

Par conséquent, une classe de configuration spéciale est nécessaire pour traiter spécifiquement les problèmes causés par le traitement de sérialisation par défaut de RedisTemplate.

Il est à noter qu'ici un nouveau sérialiseur est rechargé pour remplacer le sérialiseur d'origine, ce qui prouve qu'il avait à l'origine son propre sérialiseur par défaut JdkSerializationRedisSerializer. Comment SpringBoot intègre le code de vérification du cache Redis

@PostMapping("/sendMsg")
public Result<String> sendMsg(@RequestBody User user, HttpSession session) {
    // 获取需要发送短信的手机号
    String userPhone = user.getPhone();
    if (StringUtils.isNotEmpty(userPhone)) {
        // 随机生成4位验证码
        String checkCode = ValidateCodeUtils.generateValidateCode4String(4);
        // 将生成的验证码保存到Redis中并设置有效期五分钟
        redisTemplate.opsForValue().set(userPhone, checkCode, 5, TimeUnit.MINUTES);
        return Result.success(checkCode);
    }
    return Result.error("短信发送错误");
}
Copier après la connexion

4. Fonctionnement Java de Redis🎜🎜Étant donné que le code est relativement privé ici (principalement parce que je suis trop paresseux pour trier les interfaces de génération de code de connexion et de vérification), j'utiliserai directement la classe de test pour la démonstration ici. 🎜🎜Envoyer le code de vérification🎜
@PostMapping("/login")
public Result<User> login(@RequestBody Map map, HttpSession session) {
    log.info("map: {}", map);
    // 获取用户输入信息
    String phone = (String)map.get("phone");
    String code = (String)map.get("code");
    // 从Redis中取出验证码
    String checkCode = redisTemplate.opsForValue().get(phone);
    // 比对验证码是否一致
    if (StringUtils.isNotEmpty(checkCode) && checkCode.equals(code.toLowerCase())) {
        // 将用户id存放到session中
        session.setAttribute("user", user.getId());
        // 登录成功,删除Redis中的验证码
        redisTemplate.delete(phone);
        // 将用户信息返回到前端
        return Result.success(user);
    }
    return Result.error("登录失败,请检查手机号或验证码是否正确");
}
Copier après la connexion
🎜🎜🎜🎜Entrez le code de vérification pour vous connecter🎜rrreee🎜🎜🎜

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Comment construire le mode Cluster Redis Comment construire le mode Cluster Redis Apr 10, 2025 pm 10:15 PM

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 Comment effacer les données redis Apr 10, 2025 pm 10:06 PM

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.

Comment utiliser la commande redis Comment utiliser la commande redis Apr 10, 2025 pm 08:45 PM

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).

Comment utiliser Redis Lock Comment utiliser Redis Lock Apr 10, 2025 pm 08:39 PM

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.

Comment lire la file d'attente redis Comment lire la file d'attente redis Apr 10, 2025 pm 10:12 PM

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.

Comment implémenter le redis sous-jacent Comment implémenter le redis sous-jacent Apr 10, 2025 pm 07:21 PM

Redis utilise des tables de hachage pour stocker les données et prend en charge les structures de données telles que les chaînes, les listes, les tables de hachage, les collections et les collections ordonnées. Redis persiste les données via des instantanés (RDB) et ajoutez les mécanismes d'écriture uniquement (AOF). Redis utilise la réplication maître-esclave pour améliorer la disponibilité des données. Redis utilise une boucle d'événement unique pour gérer les connexions et les commandes pour assurer l'atomicité et la cohérence des données. Redis définit le temps d'expiration de la clé et utilise le mécanisme de suppression paresseux pour supprimer la clé d'expiration.

Comment lire le code source de Redis Comment lire le code source de Redis Apr 10, 2025 pm 08:27 PM

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.

Comment faire du message middleware pour redis Comment faire du message middleware pour redis Apr 10, 2025 pm 07:51 PM

Redis, en tant que Message Middleware, prend en charge les modèles de consommation de production, peut persister des messages et assurer une livraison fiable. L'utilisation de Redis comme Message Middleware permet une faible latence, une messagerie fiable et évolutive.

See all articles