广告
返回顶部
首页 > 资讯 > 后端开发 > Python >SpringBoot详解如何整合Redis缓存验证码
  • 462
分享到

SpringBoot详解如何整合Redis缓存验证码

2024-04-02 19:04:59 462人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录1、简介2、介绍3、前期配置3.1、坐标导入3.2、配置文件3.3、配置类4、Java操作Redis1、简介 Redis is an open source (BSD licen

1、简介

Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache, and message broker.

翻译:Redis 是一个开源的内存中的数据结构存储系统,它可以用作:数据库缓存和消息中间件

官网链接:https://redis.io

Redis 是用 C 语言开发的一个开源的高性能键值对(key-value)数据库,官方提供的数据是可以达到 **100000+**的 QPS。

QPS(Queries-per-second),每秒内查询次数。(百度百科)

它存储的 value 类型比较丰富,也被称为结构化的 NoSQL 数据库。

Nosql(Not only SQL),不仅仅是 SQL,泛指非关系型数据库。

NoSQL 数据库并不是要取代关系型数据库,而是关系型数据库的补充。

关系型数据库(RDBMS)

非关系型数据库(NoSQL)

  • Redis
  • MonGo db
  • MemCached

Redis 应用场景

2、介绍

Redis 的 Java 客户端很多,官方推荐的有三种:Jedis、Lettuce、Redisson。

spring 对 Redis 客户端进行了整合,提供了 Spring Data Redis。

Spring Boot 项目中还提供了对应的 Starter,即 spring-boot-starter-data-redis。

在这里直接使用的是Spring Data Redis,且不展示Redis的下载和安装过程啦。

3、前期配置

3.1、坐标导入

在创建完成Spring Boot项目之后,在pom.xml中加入spring-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、配置类

使用 SpringBoot 整合 redis 的专用客户端接口操作。此处使用的是 SpringBoot 框架提供的 RedisTemplate。

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

比如:输入的 key 值是 city,但 redis 获得到的 key 值却是 \xac]xed\x00\x05t\x00\x04city

因此就需要一个专门的配置类,来专门处理 RedisTemplate 默认的序列化处理所导致的问题。

值得注意的是,这里是重新加载一个新的序列化器来取代原来的序列化器,这就证明着其原本是有着自己默认的序列化器jdkSerializationRedisSerializer。


@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;
    }
}

4、Java操作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("短信发送错误");
}

输入验证码登录

@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("登录失败,请检查手机号或验证码是否正确");
}

到这里Redis的简单整合就完成啦,这里的Redis使用仍是比较简单的,验证码也只是Redis的一个最简单使用方式之一而已,在后续狗子我将会尝试Redis的其他用法,在没有偷懒的时候写好笔记记录下来!

到此这篇关于SpringBoot详解如何整合Redis缓存验证码的文章就介绍到这了,更多相关SpringBoot Redis缓存验证码内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: SpringBoot详解如何整合Redis缓存验证码

本文链接: https://www.lsjlt.com/news/153383.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SpringBoot详解如何整合Redis缓存验证码
    目录1、简介2、介绍3、前期配置3.1、坐标导入3.2、配置文件3.3、配置类4、Java操作Redis1、简介 Redis is an open source (BSD licen...
    99+
    2022-11-13
  • SpringBoot怎么整合Redis缓存验证码
    今天小编给大家分享一下SpringBoot怎么整合Redis缓存验证码的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1、简介...
    99+
    2023-07-02
  • SpringBoot详解整合Redis缓存方法
    目录1、Spring Boot支持的缓存组件2、基于注解的Redis缓存实现3、基于API的Redis缓存实现1、Spring Boot支持的缓存组件 在Spring Boot中,数...
    99+
    2022-11-13
  • SpringBoot详解整合Spring Cache实现Redis缓存流程
    目录1、简介2、常用注解2.1、@EnableCaching2.2、@Cacheable2.3、@CachePut2.4、@CacheEvict3、使用Redis当作缓存产品3.1、...
    99+
    2022-11-13
  • SpringBoot示例代码整合Redis详解
    目录Redis 简介Redis 优势Redis与其他key-value存储有什么不同添加Redis依赖包配置Redis数据库连接编写Redis操作工具类测试Redis 简介 Redi...
    99+
    2022-11-13
  • 详解redis与spring的整合(使用缓存)
    1、实现目标通过redis缓存数据。(目的不是加快查询的速度,而是减少数据库的负担)  2、所需jar包注意:jdies和commons-pool两个jar的版本是有对应关系的,注意引入jar包是要配对使用,否则将会报错。因为commons...
    99+
    2023-05-31
    spring redis
  • 如何用SpringBoot整合Redis(详细讲解~)
    大家好,我是卷心菜。本篇主要讲解用SpringBoot整合Redis,如果您看完文章有所收获,可以三连支持博主哦~,嘻嘻。 文章目录 一、前言二、基本介绍三、SpringDataRedis四、API的简单认识五、快速入门1、引入...
    99+
    2023-08-20
    redis spring boot java
  • 详解SpringBoot如何使用Redis和Redis缓存
    目录一、配置环境二、Redis的基本操作三、使用redis作缓存一、配置环境 首先,先创建一个SpringBoot项目,并且导入Redis依赖,使用Jedis进行连接测试。 本人的R...
    99+
    2022-11-13
  • 实例详解Spring Boot实战之Redis缓存登录验证码
    本章简单介绍redis的配置及使用方法,本文示例代码在前面代码的基础上进行修改添加,实现了使用redis进行缓存验证码,以及校验验证码的过程。1、添加依赖库(添加redis库,以及第三方的验证码库) <dependency...
    99+
    2023-05-31
    spring boot redis
  • 如何使用springboot整合redis实现发送邮箱并验证
    这篇文章主要为大家展示了“如何使用springboot整合redis实现发送邮箱并验证”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用springboot整合redis实现发送邮箱并验证”...
    99+
    2023-06-22
  • SpringBoot整合Redis实现热点数据缓存的示例代码
    我们以IDEA + SpringBoot作为 Java中整合Redis的使用 的测试环境 首先,我们需要导入Redis的maven依赖 <!-- Redis的maven依赖包 ...
    99+
    2023-03-13
    SpringBoot热点数据缓存 SpringBoot整合Redis缓存
  • SpringBoot如何整合nacos详解
    目录一、什么是nacos二、快速使用三、启动nacos四、项目整合nacos一、什么是nacos nacos支持基于dns和基于rpc的服务发现,可以作为springCloud的注册...
    99+
    2022-11-12
  • SpringBoot整合Redis实现高并发数据缓存的示例讲解
    目录什么是缓存为什么要用缓存Redis为什么这么快实现一个用户信息的缓存方式一:利用RedisTemplate实现 导入依赖添加配置添加redis工具类及配置类service层con...
    99+
    2023-03-13
    SpringBoot Redis高并发数据缓存 SpringBoot Redis缓存
  • Springboot详解如何整合使用Thymeleaf
    目录引入Thymeleaf取值有无转义循环模板引擎的作用就是我们来写一个页面模板,比如有些值呢,是动态的,我们写一些表达式。而这些值,从哪来呢,就是我们在后台封装一些数据。然后把这个...
    99+
    2022-11-13
  • 详解SpringBoot是如何整合SpringDataRedis的?
    一、创建项目添加依赖 创建SpringBoot项目,并添加如下依赖: <dependencies> <!-- springBoot 的启动器 -->...
    99+
    2022-11-12
  • 详解SpringBoot是如何整合JPA的
    目录SpringBoot整合JPAJPA & Spring Data JPAHibernate & JPAHibernate VS Mybatis一、导入依赖二、简单...
    99+
    2022-11-12
  • SpringBoot整合RedisTemplate如何实现缓存信息监控
    这篇文章给大家分享的是有关SpringBoot整合RedisTemplate如何实现缓存信息监控的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。SpringBoot 整合 Redis 数据库实现数据缓存的本质是整合...
    99+
    2023-06-28
  • springboot如何整合shiro实现登录验证授权的过程解析
    本篇文章为大家展示了springboot如何整合shiro实现登录验证授权的过程解析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。springboot整合shiro实现登录验证授权,内容如下所示:1...
    99+
    2023-06-29
  • 详解SpringBoot如何实现整合微信登录
    目录1.准备工作1.1 获取微信登录凭证1.2 配置文件1.3 添加依赖1.4 创建读取公共常量的工具类1.5 HttpClient工具类2.实现微信登录2.1 具体流程2.2 生成...
    99+
    2022-11-12
  • SpringBoot详解如何进行整合Druid数据源
    目录1.自定义方式1.添加依赖2.编写配置3.测试2.starter方式(推荐)1.添加依赖2.编写配置3.测试Druid是数据库连接池,它能够提供强大的监控和扩展功能。官方文档 S...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作