瑞_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: hmdp
  datasource:
    # 数据库驱动类名,如果是版本5MySQL请修改为com.mysql.jdbc.Driver
    driver-class-name: com.mysql.cj.jdbc.Driver
    # 数据库连接URL
    url: jdbc:mysql://127.0.0.1:3306/hmdp?useSSL=false&serverTimezone=UTC
    # 数据库用户名
    username: root
    # 数据库密码
    password: 123456
  redis:
    # Redis主机地址
    host: 192.168.13.128
    # Redis端口号
    port: 6379
    # Redis密码
    password: 123456
    lettuce:
      pool:
        # 最大活跃连接数
        max-active: 10
        # 最大空闲连接数
        max-idle: 10
        # 最小空闲连接数
        min-idle: 1
        # 连接回收时间间隔
        time-between-eviction-runs: 10s
  jackson:
    # JSON处理时忽略非空字段
    default-property-inclusion: non_null
mybatis-plus:
  # 别名扫描包
  type-aliases-package: com.hmdp.entity # 别名扫描包
logging:
  level:
    # 日志级别为debug
    com.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,即可看到如下页面。

在这里插入图片描述


项目准备完成

瑞:后续章节会尽快更新




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

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


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

mac上更改vscode快捷键

以移动当前行代码为例 mac上的vscode,默认移动当前行代码的快捷键是⌥↑即option↑按键 现在我想改成command↑ 步骤如下 1.打开vscode-code-首选项-键盘快捷键 2.打开快捷键列表 3.输入move line,找到要改动的这个快捷键 当前行-右键-更改键绑定&…

HTML极速入门

HTML基础 什么是HTML HTML(Hyper Text Markup Language),超文本标记语言. 超文本:比文本更强大.通过链接和交互式方式来组织和呈现信息的文本形式.不仅仅有文本,还可能包括图片,音频,或者自己经审阅过它的学者所加的评注,补充或脚注等. 标记语言:由标签构成的语言 HTML的标…

C++入门全集(5):内存管理

前言 一、内存区域划分 二、C的内存管理方式 2.1 对内置类型 2.2 对自定义类型 三、new和delete的底层实现 四、new和delete的原理 五、定位new 六、malloc/free和new/delete 前言 在C中,内存管理是不可避免的一门必修课。C对内存的自由度使其获得了更高的…

面向对象编程-Java

面向对象编程 面向对象 & 面向过程 面向过程思想(线性思维) 步骤清晰简单,第一步做什么,第二步做什么……面向过程适合处理一些较为简单的问题 面向对象思想 物以类聚,分类的思维模式,思考问题首先会解…

mybatis的xml文件如何配置能被识别

为了让MyBatis能够识别和使用XML Mapper文件,你需要确保这些文件被正确放置和配置。下面是确保MyBatis XML Mapper文件被识别的步骤: 1. 正确放置XML Mapper文件 通常,XML Mapper文件应该放在src/main/resources目录下。为了更好的组织这些…

【STM32+OPENMV】二维云台颜色识别及追踪

一、准备工作 有关OPENMV最大色块追踪及与STM32通信内容,详情见【STM32HAL】与OpenMV通信 有关七针OLED屏显示内容,详情见【STM32HAL】七针OLED(SSD1306)配置(SPI版) 二、所用工具 1、芯片:STM32F407ZGT6 2、CUBEMX配置软件 3、KEIL5 4…

VUE读取静态文件技巧

背景: 现在有一个文件123.jpg在assets目录,我需要在bbb.vue里面去引用他,直接使用../方法无法获取该文件,且页面不能正常显示。文件目录如下: 解决办法:使用require方法: require(../assets/1…

基于springboot+vue的酒店管理系统

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…

【STM32F103】WDG看门狗

本系列在之前介绍时钟树的文章中有稍微提一下看门狗WDG(Watch Door Dog)。 简单来说,可以当成是一个计数器,一旦这个计数器溢出则单片机复位。因为我们需要每隔一段时间就把这个计数器的值清零(喂狗)。 I…

C++命名空间

在C/C中,变量,函数和和类这些名称都存在于全局作用域中,可能会导致很多冲突,使用命名空间的目的是对标识符的名称进行本地化,避免命名冲突或名字污染,namespace关键字就是解决这种问题的。如下程序并无问题…

低代码平台开发实践:基于React的高效构建与创新【文末送书-29】

文章目录 背景低代码平台简介基于React的优势低代码平台的实际应用 低代码平台开发实践:基于React【文末送书-29】 背景 随着技术的不断进步和业务需求的日益复杂,低代码平台成为现代软件开发领域中备受关注的工具之一。在这个快节奏的时代,…

C语言——结构体(位段)、联合体、枚举

hello,大家好!我是柚子,今天给大家分享的内容是C语言中的自定义类型结构体、联合体以及枚举,有什么疑问或建议可以在评论区留言,会顺评论区回访哦~ 一、结构体 struct a.结构体声明 不同于数组的是,结构…

16:00面试,16:06就出来了,问的问题过于变态了。。。

从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到2月一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40%…

C++对象内存模型布局详解

目录 本文主要内容如下: 最后还有一些问题: 一、理解虚函数表 二、对象模型概述 三、继承下的C对象模型 单继承: 多继承: 一般的多继承(非菱形继承): 菱形继承: 五、虚继承…

如何创建一个VUE3项目并使用Element UI插件

1.确保已经安装了Node: win R 打开控制面板,输入“node -v”回车。出现版本号信息,则安装成功,否则请移步安装。 Node.js安装及环境配置(简单易懂!)_building: c:\program files\nodejs\node…

基于SSM的学科竞赛管理系统。Javaee项目。ssm项目。

演示视频: 基于SSM的学科竞赛管理系统。Javaee项目。ssm项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,通过Spring SpringMvcMybatisVueLayuiElemen…

我的第②个出海工具站 - 2024年50个出海工具站计划

为了大家更好的使用各种出海工具。我上线了一版 出海工具导航 站点,经常使用的可以收藏下,我文内使用的网站都集成在了这里,非常使用。 随着AIGC的到来,2024年到了海外工具回暖的一年。今年计划上线50款出海工具站计划&#xff0c…

嵌入式工程师函数变量,常用的命名规则(参考学习)

很多工程师不注重平时编码习惯,比如命名规则,一会大写、一会小写,一会中文拼音,一会下划线等,导致自己写的代码自己都看不懂了。 今天就来分享一点关于软件代码常见的几种命名规则。 匈牙利命名法 匈牙利命名法广泛应…

西安雁塔未来人工智能计算中心算力成本分析

先看一例旧闻:西部“最强大脑”落户雁塔——30亿亿次超算能力助力创新之城建设 其中提到一期算力为 300PFLOPS FP16(每秒30亿亿次半精度浮点计算),项目总投资约为19亿元。 这个算力是什么概念呢? 我们以深度学习训练中…

使用sunshine和moonlight实现远程游戏串流

过年回家想要打游戏,但是苦于家里没有电脑,又没办法把电脑搬回去,于是想到了使用串流的方式。 实现串流的软件有多种: moonlight。因为仅实现了 NVIDIA 的游戏串流协议,所以只支持 N 卡。Steam Link。支持 steam 的游…