黑马Redis视频教程高级篇(多级缓存案例导入说明)

news2024/11/26 0:46:28

目录

一、安装MYSQL

1.1、准备目录

1.2、运行命令

1.3、修改配置

1.4、重启

二、导入SQL

三、导入Demo工程

3.1、分页查询商品

3.2、新增商品

3.3、修改商品

3.4、修改库存

3.5、删除商品

3.6、根据id查询商品

3.7、根据id查询库存

3.8、启动

四、导入商品查询页面

4.1、运行nginx服务 

4.2、反向代理 


一、安装MYSQL

后期做数据同步需要用到MySQL的主从功能,所以需要大家在虚拟机中,利用Docker来运行一个MySQL容器。

1.1、准备目录

为了方便后期配置MySQL,我们先准备两个目录,用于挂载容器的数据和配置文件目录:

# 进入/tmp目录
cd /tmp
# 创建文件夹
mkdir mysql
# 进入mysql目录
cd mysql

1.2、运行命令

进入mysql目录后,执行下面的Docker命令:

docker run \
 -p 3306:3306 \
 --name mysql \
 -v $PWD/conf:/etc/mysql/conf.d \
 -v $PWD/logs:/logs \
 -v $PWD/data:/var/lib/mysql \
 -e MYSQL_ROOT_PASSWORD=123 \
 --privileged \
 -d \
 mysql:5.7.25

1.3、修改配置

在/tmp/mysql/conf目录添加一个my.cnf文件,作为mysql的配置文件:

# 创建文件
touch /tmp/mysql/conf/my.cnf

文件的内容如下:

[mysqld]
skip-name-resolve
character_set_server=utf8
datadir=/var/lib/mysql
server-id=1000

1.4、重启

配置修改后,必须重启容器:

docker restart mysql

二、导入SQL

接下来,利用Navicat客户端连接MySQL,然后导入课前资料提供的sql文件:

其中包含两张表:

  • tb_item:商品表,包含商品的基本信息

  • tb_item_stock:商品库存表,包含商品的库存信息

之所以将库存分离出来,是因为库存是更新比较频繁的信息,写操作较多。而其他信息修改的频率非常低。

 

三、导入Demo工程

下面导入课前资料提供的工程:

项目结构如图所示:

其中的业务包括:

  • 分页查询商品

  • 新增商品

  • 修改商品

  • 修改库存

  • 删除商品

  • 根据id查询商品

  • 根据id查询库存

 业务全部使用mybatis-plus来实现,如有需要请自行修改业务逻辑。

3.1、分页查询商品

com.heima.item.web包的ItemController中可以看到接口定义:

3.2、新增商品

com.heima.item.web包的ItemController中可以看到接口定义:

3.3、修改商品

com.heima.item.web包的ItemController中可以看到接口定义:

 

3.4、修改库存

com.heima.item.web包的ItemController中可以看到接口定义:

 

3.5、删除商品

com.heima.item.web包的ItemController中可以看到接口定义:

这里是采用了逻辑删除,将商品状态修改为3。

3.6、根据id查询商品

com.heima.item.web包的ItemController中可以看到接口定义:

这里只返回了商品信息,不包含库存。

3.7、根据id查询库存

com.heima.item.web包的ItemController中可以看到接口定义:

 

3.8、启动

注意修改application.yml文件中配置的mysql地址信息:

需要修改为自己的虚拟机地址信息、还有账号和密码。

修改后,启动服务,访问:http://localhost:8081/item/10001即可查询数据。

 

四、导入商品查询页面

商品查询是购物页面,与商品管理的页面是分离的。

部署方式如图:

我们需要准备一个反向代理的nginx服务器,如上图红框所示,将静态的商品页面放到nginx目录中。

页面需要的数据通过ajax向服务端(nginx业务集群)查询。

4.1、运行nginx服务 

这里我已经给大家准备好了nginx反向代理服务器和静态资源。

链接:nginx资源

我们找到nginx目录:

将其拷贝到一个非中文目录下,运行这个nginx服务。

运行命令:

start nginx.exe

然后访问 http://localhost/item.html?id=10001即可:

 

4.2、反向代理 

现在,页面是假数据展示的。我们需要向服务器发送ajax请求,查询商品数据。

打开控制台,可以看到页面有发起ajax查询数据:

而这个请求地址同样是80端口,所以被当前的nginx反向代理了。

查看nginx的conf目录下的nginx.conf文件:

其中的关键配置如下:

 

其中的192.168.150.101是我的虚拟机IP,也就是我的Nginx业务集群要部署的地方:

 

完整内容如下:

#user  nobody;
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    #tcp_nopush     on;
    keepalive_timeout  65;

    upstream nginx-cluster{
        server 192.168.150.101:8081;
    }
    server {
        listen       80;
        server_name  localhost;

	location /api {
            proxy_pass http://nginx-cluster;
        }

        location / {
            root   html;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Maven高级——私服(完结撒花!)

作用与介绍 一个公司内有两个项目组,如果其中一个开发了一个依赖tlias-utils,另一个项目组要使用的话要么就是传过来直接install放到自己的本地仓库里面的。 但是也可以搭建一个公共仓库,专门供公司局域网内部使用,也就是所谓私服。 然后在…

chatgpt赋能python:Python反向函数:在编程中的威力

Python反向函数:在编程中的威力 在Python中,反向函数是一个强大且常用的工具,可以帮助程序员在编写代码时更加高效和精确地处理数据。在本文中,我们将讨论Python反向函数的用途和实现,并详细介绍如何在您的代码中使用…

Java007——Java注释介绍

围绕以下3点介绍: 1、什么是Java注释? 2、Java注释的作用? 3、Java注释长什么样,以及怎么使用Java注释? 一、什么是Java注释? Java注释是在Java程序中用来描述代码的特殊语句。 注释被忽略并且不被编译器…

MySQL表的增删改查

目录 一、Create 1.insert 2.更新 3.替换 二、Retrieve(查找) 1.select 2.where 3. 结果排序 4. 筛选分页结果 三、Update 四、Delete 1.删除数据 2.截断表 五、聚合函数 1.count: 2.avg 3.sum 4.max 5.min 六、Group …

微信小程序开发实战 ②④(自定义 TabBar练习)

作者 : SYFStrive 博客首页 : HomePage 📜: 微信小程序 📌:个人社区(欢迎大佬们加入) 👉:社区链接🔗 📌:觉得文章不错可以点点关注 &#x1f4…

十四、神经风格迁移

文章目录 1、神经风格迁移2、生成图片的代价函数THE END 1、神经风格迁移 \qquad 神经风格迁移就是将一幅原有的图片(content picture, C),对照着一幅风格图片(style picture, S),生成一幅新的图片(generated picture, G),如下图所示&#xf…

k8s istio 集成 多版本应用服务 和 网格监测

说明 博客文章地址:https://blog.taoluyuan.com/posts/istio-getting-started/ 本主要是内容: 使用 istioctl 安装 istio采用 istio 官方提供 的 应用bookinfo,实现多版本的服务应用部署istio 网关 gateway,vs,dr 的基本使用利用监测工具 prometheus,grafana,jaeger 查看 ist…

关于EMC Unity 存储系统DIMM内存的几个问题

下面是客户咨询最多的几个关于EMC Unity的DIMM内存的问题,供大家参考。 1. Unity存储能否自己扩容内存 有客户觉得Unity存储的内容太小,想自己扩容内存,很朴实的想法,原来是每个控制器3条16gb,能不能升级到3条32gb或…

基于Mybatis-Plus拦截器实现MySQL数据加解密

一、背景 用户的一些敏感数据,例如手机号、邮箱、身份证等信息,在数据库以明文存储时会存在数据泄露的风险,因此需要进行加密, 但存储数据再被取出时,需要进行解密,因此加密算法需要使用对称加密算法。 常…

Unreal5 第三人称射击游戏 射击功能实现1

状态机的缓存 状态机缓存功能相当于我们只需要实现一次,可以在多个地方引用,也可以在别的状态机里面使用,而不是在里面再重新写一遍相应的功能。 我们可以在基础状态机的链接拉出一条线,搜索“缓存” 第一个就是新保存的缓存姿势…

Qt OpenGL(四十二)——Qt OpenGL 核心模式-GLSL(二)

提示:本系列文章的索引目录在下面文章的链接里(点击下面可以跳转查看): Qt OpenGL 核心模式版本文章目录 Qt OpenGL(四十二)——Qt OpenGL 核心模式-GLSL(二) 冯一川注:GLSL其实也是不断迭代的,比如像3.3版本中,基本数据类型浮点型只支持float型,而GLSL4.0版本开始就…

chatgpt赋能python:Python单位换算—让编程更精确的工具

Python单位换算—让编程更精确的工具 作为一名10年经验的Python工程师,我深深认识到在各种计算机领域的重要性。它可以帮助我们进行大量数据的计算和转换,其中的单位换算是其中一个重要的子领域。 单位换算对编程的重要性 无论是在科学研究还是工业生…

序贯最小二乘平差 VS 卡尔曼滤波

文章目录 Part.I IntroductionPart.II 概念比较Chap.I 序贯最小二乘平差Chap.II 卡尔曼滤波Chap.III 比较 Reference Part.I Introduction 序贯最小二乘平差和卡尔曼滤波有些相似,但是还是有一些区别: 序贯最小二乘平差用来处理静态数据,也…

层次多尺度注意力用于语义分割

层次多尺度注意力用于语义分割 HIERARCHICAL MULTI-SCALE ATTENTION FOR SEMANTIC SEGMENTATION https://arxiv.org/pdf/2005.10821.pdf 摘要 多尺度推断通常用于提高语义分割的结果。多个图像尺度通过网络传递,然后使用平均或最大池化方法将结果组合起来。在本文…

活用Excel高级筛选解决实际问题

一朋友遇到一个难题:一个电子行业文档,数据中有一项为输出电压,有固定值比如24V、48V等;也有范围值比如10V-60V或者40V-50V,数据不规则,且数量庞大。需要对数据进行分析,筛选出有效数据&#xf…

Spring Bean生命周期之(1)BeanDefinition

文章目录 1 BeanDefinition1.1 Spring Bean 读取解析配置信息1.1.1 XML 配置的处理主要使用的事例1.1.2 注解 BeanDefinition 解析示例 1.2 spring bean 注册阶段1.3 Spring BeanDefinition 合并阶段1.3.1 BeanDefinition 合并示例1.3.2 源码分析 1 BeanDefinition 在spring b…

机器学习——线性回归篇

基本概念 什么是回归预测?什么是分类预测? 模型输入变量预测结果应用回归预测实值离散一个连续值域上的任意值预测值的分布情况分类预测实值离散两个或多个分类值将输入变量分类到不同类别 思考一个问题:分类问题是否可以转变为回归问题&am…

百度商业AI技术创新大赛启动-63万元奖金!

随着生成式AI在全球范围的热议,AIGC前沿技术也在快速迭代,正如百度CEO李彦宏所说“人工智能发生了方向性改变,从辨别式AI走向生成式AI,生成式AI会带来极大的效率提升”。而这一领域的发展,将推动AI产品应用深化&#x…

两个震子如何调整发送信号时间差来调整波束

ΔΦ 2π/λdsinθ 这个式子中 d是振子的距离不变 λ是波长可以根据频率知道...所以要控制θ 就要控制两个振子的相位差 也就是控制振子a与振子b的时间差就能控制θ 30mhz的带宽与相位偏差的影响 ΔΦ 2π/λdsinθ 频率900hmz 波长300/9000.333 频率930hmz 波长300/9300…

t-SNE(t-stochastic neighourhood embedding) 数据降维及可视化

文章目录 算法原理示例一示例二 算法原理 t-SNE 的基本思想是将高维数据映射到低维空间,同时保留数据间的局部结构。具体而言,给定一个高维数据集 X { x 1 , … , x n } \mathbf{X}\{\mathbf{x}_1,\dots,\mathbf{x}_n\} X{x1​,…,xn​},其…