Springboot如何以Repository方式整合Redis
这篇文章主要讲解了Springboot如何以Repository方式整合Redis,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。
1 简介
Redis
是高性能的NoSQL
数据库,经常作为缓存流行于各大互联网架构中。本文将介绍如何在Springboot
中整合Spring Data Redis
,使用Repository
的方式操作。
代码结构如下:
2 整合过程
2.1 安装Redis数据库
为了节省时间,就直接通过Docker
来安装了,可以参考文章:Docker安装Redis并介绍漂亮的可视化客户端进行操作,可以快速安装并使用客户端进行查看和操作。
2.2 引入相关依赖
我们引入Springboot Web
的依赖,以启动REST服务。还需要引入Spring Data Redis
相关的依赖。最后,还需要commons-pool2
,不然会因为缺少类而无法启动。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency><dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId></dependency>
2.3 配置连接信息
配置Redis
的连接信息,这个信息跟你安装时的配置有关,同时配置了连接池,各项的配置及相关解释如下:
# Redis数据库索引,默认为0spring.redis.database=0# Redis端口spring.redis.port=6379# Redis服务器主机spring.redis.host=localhost# 连接池最大连接数spring.redis.lettuce.pool.max-active=8# 连接池最大空闲spring.redis.lettuce.pool.max-idle=8# 连接池最小空闲spring.redis.lettuce.pool.min-idle=2# 连接池最大阻塞等待时间spring.redis.lettuce.pool.max-wait=1ms# 超时时间spring.redis.lettuce.shutdown-timeout=100ms
2.4 创建实体类
存入Redis
中的数据类型,可以是自定义的一个类,注意需要加上注解@RedisHash
和@Id
。存入Redis
的数据为Set
类型。
具体代码如下:
package com.pkslow.redis.model;import org.springframework.data.annotation.Id;import org.springframework.data.redis.core.RedisHash;import java.util.Date;@RedisHash("User")public class User { @Id private String userId; private String name; private Integer age; private Date createTime = new Date(); public String getUserId() { return userId; } public void setUserId(String userId) { this.userId = userId; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public Date getCreateTime() { return createTime; } public void setCreateTime(Date createTime) { this.createTime = createTime; }}
2.5 数据库访问层UserRepository接口
直接继承CrudRepository
接口就行了,不用自己来实现,需要注意CrudRepository<User, String>
的泛型类型:
package com.pkslow.redis.dal;import com.pkslow.redis.model.User;import org.springframework.data.repository.CrudRepository;public interface UserRepository extends CrudRepository<User, String> {}
2.6 实现Controller
Controller
实现了RESTful
风格的增删改查功能,只要把UserRepository
注入便可以使用它来操作:
package com.pkslow.redis.controller;import com.pkslow.redis.dal.UserRepository;import com.pkslow.redis.model.User;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.*;@RestController@RequestMapping("/user")public class UserController { @Autowired private final UserRepository userRepository; public UserController(UserRepository userRepository) { this.userRepository = userRepository; } @GetMapping("") public Iterable<User> getAllUsers() { return userRepository.findAll(); } @GetMapping("/{userId}") public User getByUserId(@PathVariable String userId) { return userRepository.findById(userId).orElse(new User()); } @PostMapping("") public User addNewUser(@RequestBody User user) { return userRepository.save(user); } @DeleteMapping("/{userId}") public String delete(@PathVariable String userId) { User user = new User(); user.setUserId(userId); userRepository.deleteById(userId); return "deleted: " + userId; } @PutMapping("") public User update(@RequestBody User user) { return userRepository.save(user); }}
3 Postman接口测试
本文使用Postman
进行测试,结果显示的时间为GMT时间,每个功能测试如下:
(1)新增User
(2)根据UserId查询特定User
(3)修改User
(4)删除一个User
(5)查询所有User
在Redis
中的数据如下所示:
看完上述内容,是不是对Springboot如何以Repository方式整合Redis有进一步的了解,如果还想学习更多内容,欢迎关注亿速云行业资讯频道。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。