瑞_Redis_短信登录(一)

文章目录

    • 项目介绍
    • 1 短信登录
      • 1.1 项目准备
        • 1.1.1 导入SQL
        • 1.1.2 导入后端项目
        • 1.1.3 导入前端项目

🙊 前言:本文章为瑞_系列专栏之《Redis》的实战篇的短信登录章节的项目准备小节。由于博主是从B站黑马程序员的《Redis》学习其相关知识,所以本系列专栏主要是针对该课程进行笔记总结和拓展,文中的部分原理及图解等也是来源于黑马提供的资料,特此注明。本文仅供大家交流、学习及研究使用,禁止用于商业用途,违者必究!

  • 主机操作系统:Windows10
  • VMware版本: VMware Workstation 16.2.4
  • Linux版本:CentOS 7 64位
  • 远程连接工具:MobaXterm_Personal_23.2
  • Redis版本:redis-6.2.6.tar.gz
  • Redis客户端:resp-2022.2.0.0
  • MySQL版本:8.0.29(5.7+均可)
  • Navicat Premium:15.0.28
  • JDK:1.8

相关链接:《瑞_VMware虚拟机安装Linux纯净版(含卸载,图文超详细)》
相关链接:《瑞_Redis_初识Redis(含安装教程)》
相关链接:《瑞_Redis_Redis客户端》
相关链接:《瑞_Redis_Redis命令》
相关链接:《瑞_Redis_Redis的Java客户端》

瑞&3l

项目介绍

  本文基于B站黑马程序员的《黑马点评》项目,需要相关资源可以到B站获取。
  相关资源的某度网盘链接:https://pan.baidu.com/s/1N-yr86yTRi3LbQdAL7prEQ?pwd=q0ry

  本项目具有以下功能点,本文为《短信登录》篇的项目准备小节

在这里插入图片描述

  • 短信登录
    这一块我们会使用redis共享session来实现

  • 商户查询缓存
    通过本章节,我们会理解缓存击穿,缓存穿透,缓存雪崩等问题,让小伙伴的对于这些概念的理解不仅仅是停留在概念上,更是能在代码中看到对应的内容

  • 优惠卷秒杀
    通过本章节,我们可以学会Redis的计数器功能, 结合Lua完成高性能的redis操作,同时学会Redis分布式锁的原理,包括Redis的三种消息队列

  • 附近的商户
    我们利用Redis的GEOHash来完成对于地理坐标的操作

  • UV统计
    主要是使用Redis来完成统计功能

  • 用户签到
    使用Redis的BitMap数据统计功能

  • 好友关注
    基于Set集合的关注、取消关注,共同关注等等功能,这一块知识咱们之前就讲过,这次我们在项目中来使用一下

  • 达人探店
    基于List来完成点赞列表的操作,同时基于SortedSet来完成点赞的排行榜功能

由于该项目主要是为了学习Redis,所以不会设计为微服务架构,简化代码复杂度,所以采用前后端分离的单体架构

说明

  手机或者app端发起请求,请求我们的nginx服务器,nginx基于七层模型走的事HTTP协议,可以实现基于Lua直接绕开tomcat访问redis,也可以作为静态资源服务器,轻松扛下上万并发, 负载均衡到下游tomcat服务器,打散流量,我们都知道一台4核8G的tomcat,在优化和处理简单业务的加持下,大不了就处理1000左右的并发, 经过nginx的负载均衡分流后,利用集群支撑起整个项目,同时nginx在部署了前端项目后,更是可以做到动静分离,进一步降低tomcat服务的压力,这些功能都得靠nginx起作用,所以nginx是整个项目中重要的一环。

  在 tomcat 支撑起并发流量后,我们如果让 tomcat 直接去访问 Mysql ,根据经验 Mysql 企业级服务器只要上点并发,一般是16或32 核心cpu,32 或64G内存,像企业级mysql加上固态硬盘能够支撑的并发,大概就是4000起~7000左右,上万并发, 瞬间就会让Mysql服务器的cpu,硬盘全部打满,容易崩溃,所以我们在高并发场景下,会选择使用mysql集群,同时为了进一步降低Mysql的压力,同时增加访问的性能,我们也会加入Redis,同时使用Redis集群使得Redis对外提供更好的服务。

在这里插入图片描述

1 短信登录

1.1 项目准备

1.1.1 导入SQL

瑞:注意要使用至少 5.7+ 的MySQL版本,否则会报错。博主使用的是8.0.29

在这里插入图片描述

瑞:刷新数据库之后如果没有hmdp数据库,那就新建数据库,名字为hmdp,再把hmdp.sql文件拖拽到该数据库中加载,成功导入SQL文件后如下图所示

在这里插入图片描述

  • tb_user:用户表
  • tb_user_info:用户详情表
  • tb_shop:商户信息表
  • tb_shop_type:商户类型表
  • tb_blog:用户日记表(达人探店日记)
  • tb_follow:用户关注表
  • tb_voucher:优惠券表
  • tb_voucher_order:优惠券的订单表
1.1.2 导入后端项目

  在资料中提供了一个项目源码 [hm-dianping.zip] 文件,将其解压到目录后用 idea 打开(要确保该目录中不包含中文、特殊字符和空格

  注意application.yaml文件中不要忘记修改配置,尤其是MySQL和Redis的账户密码,服务IP等信息

在这里插入图片描述

server:# 服务器端口号port: 8081
spring:application:# 应用名称name: hmdpdatasource:# 数据库驱动类名,如果是版本5MySQL请修改为com.mysql.jdbc.Driverdriver-class-name: com.mysql.cj.jdbc.Driver# 数据库连接URLurl: jdbc:mysql://127.0.0.1:3306/hmdp?useSSL=false&serverTimezone=UTC# 数据库用户名username: root# 数据库密码password: 123456redis:# Redis主机地址host: 192.168.13.128# Redis端口号port: 6379# Redis密码password: 123456lettuce:pool:# 最大活跃连接数max-active: 10# 最大空闲连接数max-idle: 10# 最小空闲连接数min-idle: 1# 连接回收时间间隔time-between-eviction-runs: 10sjackson:# JSON处理时忽略非空字段default-property-inclusion: non_null
mybatis-plus:# 别名扫描包type-aliases-package: com.hmdp.entity # 别名扫描包
logging:level:# 日志级别为debugcom.hmdp: debug

  启动项目后,在浏览器访问http://localhost:8081/shop-type/list,如果看到如下则后端导入成功

在这里插入图片描述

1.1.3 导入前端项目

  在资料中提供了一个前端项目 [nginx-1.18.0.zip] 文件,将其解压到某目录内(要确保该目录中不包含中文、特殊字符和空格,如博主的存放路径为:“F:\code\WebCode\hmdp\nginx-1.18.0”)

  在nginx.exe文件目录中用cmd打开控制台,输入nginx.exe

在这里插入图片描述

  启动nginx后打开chrome谷歌浏览器,按F12(或空白位置鼠标右键点击“检查”)打开开发者工具,选择任意一个手机没收即可。URL输入:http://localhost:8080,即可看到如下页面。

在这里插入图片描述


项目准备完成

瑞:后续章节会尽快更新




本文是博主的粗浅理解,可能存在一些错误或不完善之处,如有遗漏或错误欢迎各位补充,谢谢

  如果觉得这篇文章对您有所帮助的话,请动动小手点波关注💗,你的点赞👍收藏⭐️转发🔗评论📝都是对博主最好的支持~


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/272290.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023年12月CCF-GESP编程能力等级认证Python编程七级真题解析

本文收录于专栏《Python等级认证CCF-GESP真题解析》,专栏总目录・点这里 一、单选题(每题 2 分,共 30 分) 第1题 假设变量 x 为 float 类型,如果下面代码输入为 100,输出最接近( )。 A.0 B.-5 C.-8 D.8 答案:B 第2题 对于下面动态规划方法实现的函数,以下选项中…

简单BFF架构设计

又到周五了有了一个小时的闲暇时间简单写点东西,介绍一个简单的BFF的架构。BFF:Backends For Frontends,其实现在是个比较常见的前端架构设计的方案,其最大的优势便在于前端可以高度自由的在Node层做一些server端才可以做的东西,比如SSR、登录…

Vue保姆级项目教程:十万字零基础开发信贷管理系统!

项目简介与搭建过程 项目简介 需求背景 信贷管理系统是一种用于银行、金融机构或其他借贷组织用于管理信贷流程的软件系统。它可以帮助机构管理贷款申请、贷款审批、合同管理等相关流程,提高信贷业务的效率和准确性。 需求描述 本需求文档旨在定义信贷管理系统的功能和特…

代码随想录训练营第四天|面试题02.07链表相交

题目: 面试题 02.07. 链表相交 已解答 简单 相关标签 相关企业 提示 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目…

设计模式(工厂模式)

设计模式(工厂模式) 一、工厂模式介绍 在工厂模式中,父类决定生成示例的方式,但不决定所要生成的具体的类,具体的处理部分交给子类负责。这样就可以将生成示例的框架和生成示例的类解耦。 二、示例程序 以下示例程…

ARM中汇编语言的学习(加法、乘法、除法、左移、右移、按位与等多种命令操作实例以及ARM的 N、Z、C、V 标志位的解释)

汇编概述 汇编需要学习的大致框架如下: 汇编中的符号 1.指令;能够北嘁肷梢惶?2bit机器码,并且能够被cpui识别和执行 2.伪指令:本身不是指令,编译器可以将其替换成若干条指令 3.伪操作:不会生成指令…

Kafka | SpringBoot集成Kafka

SpringBoot集成Kafka 一、前言二、项目1. pom2. application.properties4. 消息生产者-测试5. 消息消费者 三、启动测试四、有总结的不对的地方/或者问题 请指正, 我在努力中 一、前言 该文章中主要对SpringBoot 集成Kafka 主要是 application.properties 与 pom坐标就算集成完…

HTML5基础2

drag 可以把拖放事件拆分成4个步骤 设置元素为可拖放。为了使元素可拖动&#xff0c;把 draggable 属性设置为 true 。 <img draggable"true"> 拖动什么。ondragstart 和 setData() const dragestart (ev)>{ev.dataTransfer.setData(play,ev.target.id)} …

[云原生] k8s之存储卷

一、emptyDir存储卷 当Pod被分配给节点时&#xff0c;首先创建emptyDir卷&#xff0c;并且只要该Pod在该节点上运行&#xff0c;该卷就会存在。正如卷的名字所述&#xff0c;它最初是空的。Pod 中的容器可以读取和写入emptyDir卷中的相同文件&#xff0c;尽管该卷可以挂载到每…

如何不丢精度保存PPT中的图片,实测有效

1.在powerpoint软件中 文件-》选项 -》高级-》设置为不压缩&#xff0c;且默认输出为最高 2.导入对应图片后&#xff0c;右键导出图片&#xff0c;选择.emf文件 3.使用windows自带的画图工具打开.emf文件&#xff0c;ctrls另存为.png文件 此方法亲测可以生成清晰度很高的图片

python:布伊山德U检验(Buishand U test,BUT)突变点检测(以NDVI时间序列为例)

作者:CSDN @ _养乐多_ 本文将介绍布伊山德U检验(Buishand U test,BUT)突变点检测代码。以 NDVI 时间序列为例。输入数据可以是csv,一列NDVI值,一列时间。代码可以扩展到遥感时间序列突变检测(突变年份、突变幅度等)中。 结果如下图所示, 文章目录 一、准备数据二、…

【JavaEE进阶】 @Transactional详解

文章目录 &#x1f343;前言&#x1f332;rollbackFor&#xff08;异常回滚属性&#xff09;&#x1f384;事务隔离级别&#x1f6a9;MySQL事务隔离级别&#x1f6a9;Spring事务隔离级别 &#x1f38b;Spring事务传播机制&#x1f6a9;什么是事务传播机制&#x1f6a9;事务有哪…

spark 实验二 RDD编程初级实践

目录 一. pyspark交互式编程示例&#xff08;学生选课成绩统计&#xff09; 该系总共有多少学生&#xff1b; 该系DataBase课程共有多少人选修&#xff1b; 各门课程的平均分是多少&#xff1b; 使用累加器计算共有多少人选了DataBase这门课。 二.编写独立应用程序实现数…

关于Python读取Excel表格中的内容

1、准备 首先准备好Excel表&#xff0c;并向里面填充好内容 2、相关算法 import pandas as pd# file_path rE:\data.xlsx # r对路径进行转义&#xff0c;windows需要 file_path rdata.xlsx# 这行代码括号里的head0&#xff0c;表示excel文件中第一行是表头&#xff0c;…

解决ChatGPT发送消息没有反应

ChatGPT发消息没反应 今天照常使用ChatGPT来帮忙码代码&#xff0c;结果发现发出去的消息完全没有反应&#xff0c;即不给我处理&#xff0c;也没有抱任何的错误&#xff0c;按浏览器刷新&#xff0c;看起来很正常&#xff0c;可以查看历史对话&#xff0c;但是再次尝试还是一…

MySQL安装使用(mac)

目录 一、下载MySQL 二、环境变量 三、启动 MySql 四、初始化密码设置 一、下载MySQL 打开 MySql 官方下载页面 我是macOS12&#xff0c;所以选择了8.0.30 下载完成之后&#xff0c;打开安装&#xff0c;一直下一步安装完成&#xff0c;在最后安装完成时&#xff0c;会弹出…

《赵玉平说职场智慧》读书笔记

目录 一、宋江是如何成为笼络人心的领导 二、给你一个干的理由——宋江的精神激励策略 三、团队如何应对这种多样化的挑战 帮领导解决难题 帮领导打退强敌 替领导四处出席 帮领导做好杂事 帮领导打响名气 四、小人难养&#xff0c;小心唯上 五、如何拒绝&#xff1f; …

Python和Google Colab进行卫星图像二维小波变化和机器学习

2D 小波分解是图像处理中的一种流行技术,使用不同的滤波器将图像分解为不同的频率分量(“近似”和“细节”系数)。该技术对于各种图像处理任务特别有用,例如压缩、去噪、特征提取和边缘检测。 在本文中,我们将演示如何在 Google Colab 中使用 Python 下载高分辨率样本卫星…

什么是MAE和MSE?

平均绝对误差&#xff08;Mean Absolute Error&#xff0c;MAE&#xff09;和平均方差误差&#xff08;Mean Squared Error&#xff0c;MSE&#xff09;是常用的评价回归模型性能的指标。它们用于衡量模型预测值与真实值之间的差异。 在深度学习领域&#xff0c;MAE 和 MSE 是…

python使用selenium webdriver chrome

安装selenum包 pip install selenium 安装chrome驱动 查看chrome版本 安装驱动 下载地址&#xff1a;https://googlechromelabs.github.io/chrome-for-testing/#stable 找到符合版本的驱动下载&#xff0c;解压&#xff0c;把解压后的路径加入PATH环境变量中&#xff1a; …