Kiroの编程指南 Kiroの编程指南
首页
  • 基础篇
  • 集合篇
  • 并发篇
  • JVM
  • Java8 新特性
  • 计算机网络
  • 操作系统
  • 数据结构与算法
  • 基础篇
  • MySql
  • Redis
  • 达梦
  • Spring
  • SpringBoot
  • Mybatis
  • Shiro
  • Netty
  • 设计须知
  • UML画图
  • 权限校验
  • 设计模式
  • API网关
  • RPC
  • 消息队列
  • SpringCloud
  • 分布式事务
  • 云存储
  • 虚拟机
  • 开发工具篇
  • 工具库篇
  • 开发技巧篇
  • 工具类系列
  • 随笔
  • HTML与CSS
  • JS学习
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • 从零带你写netty
  • 博客搭建
  • 网站收藏箱
  • 断墨寻径摘录
  • 费曼学习法
首页
  • 基础篇
  • 集合篇
  • 并发篇
  • JVM
  • Java8 新特性
  • 计算机网络
  • 操作系统
  • 数据结构与算法
  • 基础篇
  • MySql
  • Redis
  • 达梦
  • Spring
  • SpringBoot
  • Mybatis
  • Shiro
  • Netty
  • 设计须知
  • UML画图
  • 权限校验
  • 设计模式
  • API网关
  • RPC
  • 消息队列
  • SpringCloud
  • 分布式事务
  • 云存储
  • 虚拟机
  • 开发工具篇
  • 工具库篇
  • 开发技巧篇
  • 工具类系列
  • 随笔
  • HTML与CSS
  • JS学习
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • 从零带你写netty
  • 博客搭建
  • 网站收藏箱
  • 断墨寻径摘录
  • 费曼学习法
  • 基础

    • 数据库基础知识小结
    • NoSQL基础知识小结
    • 字符集详解
  • Mysql

    • MySQL基础小结
    • 索引篇
    • 思维导图
    • 数据库优化
    • 临时表
    • 实战篇

      • 日常小记
      • JOIN 解析
      • 执行计划解析
      • 内置函数小记
      • JSON字段处理
      • 时间字段的处理
      • 一文教你如何删除重复记录
      • exists语法解析
    • 读高性能MySQL笔记

      • MySQL架构
  • Redis

    • Redis总结
    • Redis小记
    • 黑马Redis

      • Redis入门篇
      • Redis实战篇
      • 分布式缓存
      • 多级缓存
      • Redis最佳实践
      • Redis原理篇
      • Redis集群
      • 案例导入说明
        • 安装MySQL
          • 准备目录
          • 运行命令
          • 修改配置
          • 重启
        • 导入SQL
        • 导入Demo工程
          • 分页查询商品
          • 新增商品
          • 修改商品
          • 修改库存
          • 删除商品
          • 根据id查询商品
          • 根据id查询库存
          • 启动
        • 导入商品查询页面
          • 运行nginx服务
          • Nginx常用命令
          • 反向代理
      • 安装OpenResty
      • 安装Canal
  • 达梦数据库

    • DM基础入门
    • DM数据类型
    • DM_SQL语言支持的表达式
  • 数据库
  • Redis
  • 黑马Redis
Kiro
2025-04-29
目录

案例导入说明

为了演示多级缓存,我们先导入一个商品管理的案例,其中包含商品的CRUD功能。我们将来会给查询商品添加多级缓存。

# 安装MySQL

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

# 准备目录

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

# 进入/tmp目录
cd /tmp
# 创建文件夹
mkdir mysql
# 进入mysql目录
cd mysql
1
2
3
4
5
6

# 运行命令

进入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
2
3
4
5
6
7
8
9
10

# 修改配置

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

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

文件的内容如下:

[mysqld]
skip-name-resolve
character_set_server=utf8
datadir=/var/lib/mysql
server-id=1000
1
2
3
4
5

# 重启

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

docker restart mysql
1

# 导入SQL

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

其中包含两张表:

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

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

# 导入Demo工程

下面导入提供的工程:item-service.zip

项目结构如图所示:

image-20210809181346450

其中的业务包括:

  • 分页查询商品
  • 新增商品
  • 修改商品
  • 修改库存
  • 删除商品
  • 根据id查询商品
  • 根据id查询库存

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

# 分页查询商品

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

image-20210809181554563

# 新增商品

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

image-20210809181646907

# 修改商品

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

image-20210809181714607

# 修改库存

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

image-20210809181744011

# 删除商品

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

image-20210809181821696

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

# 根据id查询商品

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

image-20210809181901823

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

# 根据id查询库存

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

image-20210809181932805

# 启动

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

image-20210809182350132

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

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

# 导入商品查询页面

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

部署方式如图:

image-20210816111210961

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

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

# 运行nginx服务

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

nginx-1.18.0.zip

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

运行命令:

start nginx.exe
1

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

image-20210816112323632

# Nginx常用命令

  • 启动nginx:start nginx.exe
  • 停止nginx:nginx.exe -s stop
  • 重载nginx配置:nginx.exe -s reload
  • 检测配置文件:nginx.exe -t -c conf/nginx.conf
  • 查看nginx版本:nginx.exe -V

# 反向代理

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

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

image-20210816113816958

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

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

image-20210816113917002

其中的关键配置如下:

image-20210816114416561

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

image-20210816114554645

完整内容如下:

#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;
        }
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
上次更新: 2025/4/29 05:15:44
Redis集群
安装OpenResty

← Redis集群 安装OpenResty→

Theme by Vdoing | Copyright © 2022-2025 Kiro | 豫ICP备2021022101号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式