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; } }3.2. . Fichier de configurationLes autres configurations telles que MySQL sont ignorées ici, et seules les informations de configuration de Redis sont mises en évidence
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 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("短信发送错误"); }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("登录失败,请检查手机号或验证码是否正确"); }🎜🎜🎜🎜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!

RedisservisifiedasanosqldatabaseBecauseiSeSakey-ValuedatamodelinSteadoftraDtionalrelationDatabasEmodel.itofferseSpeedAndFlexibibit

Redis améliore les performances et l'évolutivité des applications en mettant en cache des données, implémentant le verrouillage distribué et la persistance des données. 1) Données de cache: utilisez Redis pour mettre en cache les données fréquemment accessibles pour améliorer la vitesse d'accès aux données. 2) Verrouillage distribué: utilisez Redis pour implémenter les verrous distribués pour assurer la sécurité du fonctionnement dans un environnement distribué. 3) Persistance des données: assurer la sécurité des données via les mécanismes RDB et AOF pour éviter la perte de données.

Le modèle et la structure de données de Redis incluent cinq types principaux: 1. String: Utilisé pour stocker des données de texte ou binaires et prend en charge les opérations atomiques. 2. Liste: collection d'éléments commandés, adapté aux files d'attente et aux piles. 3. Ensemble: Éléments uniques non ordonnés Ensemble, soutenant le fonctionnement de l'ensemble. 4. Ensemble ordonné (triset): un ensemble unique d'éléments avec des scores, adaptés aux classements. 5. Table du hachage (hachage): une collection de paires de valeurs clés, adaptées au stockage d'objets.

Les méthodes de base de données de Redis incluent les bases de données en mémoire et le stockage de valeurs de clé. 1) Redis stocke les données en mémoire, lit et écrit rapidement. 2) Il utilise des paires de valeurs clés pour stocker des données, prend en charge des structures de données complexes telles que les listes, les collections, les tables de hachage et les collections ordonnées, adaptées aux caches et aux bases de données NoSQL.

Redis est une puissante solution de base de données car elle offre des performances rapides, de riches structures de données, une haute disponibilité et une évolutivité, des capacités de persistance et un large éventail de support écosystémique. 1) Performances extrêmement rapides: les données de Redis sont stockées en mémoire et ont des vitesses de lecture et d'écriture extrêmement rapides, adaptées aux applications élevées de concurrence et de latence faible. 2) Rich Structure de données: prend en charge plusieurs types de données, tels que des listes, des collections, etc., qui conviennent à une variété de scénarios. 3) Haute disponibilité et évolutivité: prend en charge la réplication maître-esclave et le mode de cluster pour atteindre la haute disponibilité et l'évolutivité horizontale. 4) Persistance et sécurité des données: la persistance des données est obtenue via RDB et AOF pour garantir l'intégrité et la fiabilité des données. 5) Support d'écosystème et communautaire large: avec un énorme écosystème et une communauté active,

Les caractéristiques clés de Redis incluent la vitesse, la flexibilité et le support de structure de données riche. 1) Speed: Redis est une base de données en mémoire, et les opérations de lecture et d'écriture sont presque instantanées, adaptées à la gestion du cache et de la session. 2) Flexibilité: prend en charge plusieurs structures de données, telles que des chaînes, des listes, des collections, etc., qui conviennent au traitement des données complexes. 3) Prise en charge de la structure des données: fournit des chaînes, des listes, des collections, des tables de hachage, etc., qui conviennent aux différents besoins commerciaux.

La fonction centrale de Redis est un système de stockage et de traitement de données en mémoire haute performance. 1) Accès aux données à grande vitesse: Redis stocke les données en mémoire et fournit une vitesse de lecture et d'écriture au niveau microseconde. 2) Rich Structure de données: prend en charge les chaînes, les listes, les collections, etc., et s'adapte à une variété de scénarios d'application. 3) Persistance: Persister les données sur le disque via RDB et AOF. 4) Publier l'abonnement: peut être utilisé dans les files d'attente de messages ou les systèmes de communication en temps réel.

Redis prend en charge une variété de structures de données, notamment: 1. String, adapté au stockage des données à valeur unique; 2. Liste, adaptée aux files d'attente et aux piles; 3. SET, utilisé pour stocker des données non dégonflées; 4. Ensemble ordonné, adapté aux listes de classement et aux files d'attente de priorité; 5. Table du hachage, adapté au stockage des données d'objet ou structurées.


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

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

Version Mac de WebStorm
Outils de développement JavaScript utiles

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

DVWA
Damn Vulnerable Web App (DVWA) est une application Web PHP/MySQL très vulnérable. Ses principaux objectifs sont d'aider les professionnels de la sécurité à tester leurs compétences et leurs outils dans un environnement juridique, d'aider les développeurs Web à mieux comprendre le processus de sécurisation des applications Web et d'aider les enseignants/étudiants à enseigner/apprendre dans un environnement de classe. Application Web sécurité. L'objectif de DVWA est de mettre en pratique certaines des vulnérabilités Web les plus courantes via une interface simple et directe, avec différents degrés de difficulté. Veuillez noter que ce logiciel

Dreamweaver Mac
Outils de développement Web visuel