秒杀模块-基础知识

用到的技术栈,springboot,MyBatis,Redis,Druid,RabbitMq

实现分布式session

秒杀逻辑

添加spring-boot依赖和模板引擎依赖

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<parent>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-parentartifactId>
<version>2.1.5.RELEASEversion>
<relativePath/>
parent>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-thymeleafartifactId>
<version>2.0.4.RELEASEversion>
dependency>

在属性文件中添加关于模板引擎的配置,设置前缀和后缀。

1
2
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html

添加Mysql依赖和Druid依赖

在pom.xml中修改

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<dependency>
<groupId>org.mybatis.spring.bootgroupId>
<artifactId>mybatis-spring-boot-starterartifactId>
<version>1.3.2version>
dependency>

<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<version>8.0.13version>
dependency>

<dependency>
<groupId>com.alibabagroupId>
<artifactId>druidartifactId>
<version>1.1.10version>
dependency>

属性文件中添加

1
2
3
4
5
6
7
8
9
10
11
12
13
mybatis.type-aliases-package=com.hzc.secKill.Domain
//下划线转成xml驼峰命名法
mybatis.configuration.map-underscore-to-camel-case=true
mybatis.configuration.default-fetch-size=100
mybatis.configuration.default-statement-timeout=3000
//配置文件扫描,接口类与xml文件放在一起
mybatis.mapper-locations=classpath:com/hzc/secKill/DAO/*.xml

//数据库名称为miaosha
spring.datasource.url=jdbc:mysql://localhost:3306/miaosha?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
spring.datasource.username=root
spring.datasource.password=xxxx
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

注意:

1
2
3
4
5
6
7
8
@Mapper
@Repository
public interface UserDAO {
//@Param("id") 作为变量

@Select("select * from user where id = #{id}")
public User getById(@Param("id") int id);
}

配置redis

在.conf文件中修改bind 0.0.0.0 因为之后要设置成分布式

daemonize yes允许后台运行

requirepass 123456 设置密码

1
2
3
4
redis-server ./redis.conf
//查看进程
ps -ef | grep redis
redis-cli
1
2
3
4
5
6
7
8
9
10
11
<dependency>
<groupId>redis.clientsgroupId>
<artifactId>jedisartifactId>
<version>2.9.0version>
dependency>

<dependency>
<groupId>com.alibabagroupId>
<artifactId>fastjsonartifactId>
<version>1.2.47version>
dependency>

新建redis文件夹,则添加redisconfig.class,使用@Component注解进行配置文件的扫描。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@Component
@ConfigurationProperties(prefix = "redis")
public class RedisConfig {
private String host;
private int port;

public String getHost() {
return host;
}

public void setHost(String host) {
this.host = host;
}

public int getPort() {
return port;
}

public void setPort(int port) {
this.port = port;
}
}

修改下本地的ip地址,以及配置好密码

1
2
3
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/miaosha?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false
spring.datasource.username=root
spring.datasource.password=admin

试试分布式压测

0%