Springboot以Repository方式整合Redis的方法
1 簡介
Redis
是高性能的NoSQL
數據庫,經常作為緩存流行于各大互聯網架構中。本文將介紹如何在Springboot
中整合Spring Data Redis
,使用Repository
的方式操作。
代碼結構如下:
2 整合過程
2.1 安裝Redis數據庫
為了節(jié)省時間,就直接通過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數據庫索引,默認為0 spring.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 創(chuàng)建實體類
存入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
中的數據如下所示:
4 總結
本文通過實例講解了如何整合Springboot
和Redis
,使用的是Repository
的方式。
到此這篇關于Springboot以Repository方式整合Redis的文章就介紹到這了,更多相關Springboot以Repository方式整合Redis內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
解決springboot項目啟動報錯Field xxxMapper in com...xx
這篇文章主要介紹了解決springboot項目啟動報錯Field xxxMapper in com...xxxContr問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12詳解lombok @Getter @Setter 使用注意事項
這篇文章主要介紹了詳解lombok @Getter @Setter 使用注意事項,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-11-11