rest接口_Web服务开发:Spring Boot集成Redis,控制REST访问频率

目录:

1. Spring Boot集成Redis

2. 封装服务RedisService.java

3. 单元测试RedisServiceTest.java

4. Redis读写功能调用

5. Redis使用技巧:控制REST接口访问频率

6. 封装Annotation注解,灵活控制REST接口访问频率

7. 代码优化:ExceptionHandler全局处理异常

Redis是一个高性能的key-value数据库,常用于搭建缓存系统,提高并发响应速度。Spring Boot集成Redis只需简单配置,本文分享封装的RedisService服务,进一步介绍使用注解和Redis,灵活控制REST接口访问频率的实现方法。

典型的缓存系统数据读取流程:

ecd60ace46a94f678ffbb88d14371831

项目代码:https://github.com/jextop/StarterApi/

示例代码:https://github.com/rickding/HelloJava/tree/master/HelloAnnotation

一,Spring Boot集成Redis

22755f2231e34a03b7d42942aff05abc

1. 新建Spring Boot项目时,选中Redis,将自动添加Redis依赖

3e20e7cb2d534ec5901bf97bdb5f01b3

2. 已有Spring Boot项目,可以在pom.xml中直接引用Redis Starter

093e88ac35f0415ca64fe998a7ff9798

3. 在application.yml中配置Redis服务器信息

5b96e945b1c94904b23b73e8e72e92ff

二,封装服务RedisService.java,调用Redis功能函数

1. 使用StringRedisTemplate对String类型的key和value操作

2. 使用ValueOperations对String操作

   org.springframework.boot

3. ValueOperations对Object操作

   spring-boot-starter-data-redis

4. ListOperations对列表操作

a) lSet()
b) lGet()

5. HashOperations对哈希表操作

a) hSet()
b) hGet()

6. SetOperations对集合操作

a) sSet()
b) sGet()

三,单元测试RedisServiceTest.java

bf6ef1434a784b5a99df230aae264314

四,Redis读写功能调用

1. 增加RestController:CheckController.java

2. 增加REST接口/chk/cache,调用Redis读写功能

2eb8acd601d443a3b9322e72507f6f0e

3. REST接口调用RedisService示例

35ea7de711be4f2db33879fd9b290602

五,Redis使用技巧:控制REST接口访问频率

1,功能设计:统计API在指定时间段内的访问次数,进行频率控制

2,实现要点:将接口访问频率控制逻辑实现在解释器和注解中

4e5ac09da861420e9655338eee261ab8
代码下载:https://github.com/jextop/StarterApi/tree/master/src/main/java/com/starter/
├── interceptor/AccessInterceptor.java
├── exception/AccessLimitException.java
├── config/WebConfig.java
├── annotation/AccessLimited.java
├── controller/ExceptionController.java

3,处理流程

- Redis统计指定时间段内的访问次数,根据HttpRequest生成key

- Interceptor解释器拦截,实现访问频率控制逻辑

- 抛出异常AccessLimitException

2397f391fa434e35852e302156439588
273977d2ebea4404b4cd4bee941dd0a8

六,封装Annotation注解,实现灵活的控制规则

1. 增加注解@AccessLimited

声明REST接口期望的访问频率控制规则:多长时间内允许访问多少次。然后更新代码,判断时使用accessLimited.count()和accessLimited.seconds()

245b9126e2854df29522ab8a45b2e684

2. REST接口引用@AccessLimited,代码优雅的只需一个注解

188d6bb327754b7b842877d9eab4f610

3. 调用示例

f6f3f230ba504d95845065dd2aae52d9

七,ExceptionHandler全局处理异常

异常发生时,返回给客户端不同的状态和信息。

1,处理AccessLimitException

2,处理Redis数据读取异常:PersistenceException, DataAccessException

9d734fa1213b46838c63f952c6e16a6d
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值