Comment SpringBoot intègre le code de vérification du cache Redis
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>
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; } }
spring :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.
# 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
Par 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.
@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("短信发送错误"); }
@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("登录失败,请检查手机号或验证码是否正确"); }
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

AI Hentai Generator
Générez AI Hentai gratuitement.

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)

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.

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.

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.

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.

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.

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.
