一、Redis简介
简单来说 Redis 就是一个使用 C 语言开发的数据库,不过与传统数据库不同的是 Redis 的数据是存在内存中的 ,也就是它是内存数据库,所以读写速度非常快,因此 Redis 被广泛应用于缓存方向。
另外,Redis 除了做缓存之外,Redis 也经常用来做分布式锁,甚至是消息队列。
Redis 提供了多种数据类型来支持不同的业务场景。Redis 还支持事务 、持久化、Lua 脚本、多种集群方案。
接口幂等性:防止重复提交
(在互联网API接口中,由于网络超时、手动刷新等经常导致客户端重复提交数据到服务端)比如说添加一次和添加多次结果是一样的,只会执行一次
如何防止重复提交:用注解 + AOP。通过在自定义注解里定义一些相关的字段,比如过期时间即该时间内同一用户不能重复提交请求。然后把注解按需加在接口上,最后在拦截器里判断接口上是否有该接口,如果存在则拦截。
目前主流的 Java 项目都在使用 Spring Boot,那么我们就来在 Spring Boot 中整合 Redis。
Spring Boot 使用“约定大于配置”的方式逐步的取代了早起通过 XML 进行配置的方式,使得在 Spring Boot 中整合各种库或者依赖都非常的方便。
创建springboot整合redis工程:
在我们创建 Spring Boot 项目时,选择相关的 Starter 时,在 “NoSQL” 中把 “Spring Data Redis” 项勾选即可。
添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis<artifactId>
</dependency>
配置Yml
spring:
redis:
# Redis服务器地址
host: 127.0.0.1
# Redis服务器端口号
port: 6379
# 使用的数据库索引,默认是0
database: 0
# 连接超时时间
timeout: 1800000
# 设置密码
password: "123456"
lettuce:
pool:
# 最大阻塞等待时间,负数表示没有限制
max-wait: -1
# 连接池中的最大空闲连接
max-idle: 5
# 连接池中的最小空闲连接
min-idle: 0
# 连接池中最大连接数,负数表示没有限制
max-active: 20