Springboot以Repository方式整合Redis的方法
1 簡(jiǎn)介
Redis是高性能的NoSQL數(shù)據(jù)庫(kù),經(jīng)常作為緩存流行于各大互聯(lián)網(wǎng)架構(gòu)中。本文將介紹如何在Springboot中整合Spring Data Redis,使用Repository的方式操作。
代碼結(jié)構(gòu)如下:

2 整合過(guò)程
2.1 安裝Redis數(shù)據(jù)庫(kù)
為了節(jié)省時(shí)間,就直接通過(guò)Docker來(lái)安裝了,可以參考文章:Docker安裝Redis并介紹漂亮的可視化客戶端進(jìn)行操作,可以快速安裝并使用客戶端進(jìn)行查看和操作。
2.2 引入相關(guān)依賴
我們引入Springboot Web的依賴,以啟動(dòng)REST服務(wù)。還需要引入Spring Data Redis相關(guān)的依賴。最后,還需要commons-pool2,不然會(huì)因?yàn)槿鄙兕惗鵁o(wú)法啟動(dòng)。
<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的連接信息,這個(gè)信息跟你安裝時(shí)的配置有關(guān),同時(shí)配置了連接池,各項(xiàng)的配置及相關(guān)解釋如下:
# Redis數(shù)據(jù)庫(kù)索引,默認(rèn)為0 spring.redis.database=0 # Redis端口 spring.redis.port=6379 # Redis服務(wù)器主機(jī) spring.redis.host=localhost # 連接池最大連接數(shù) spring.redis.lettuce.pool.max-active=8 # 連接池最大空閑 spring.redis.lettuce.pool.max-idle=8 # 連接池最小空閑 spring.redis.lettuce.pool.min-idle=2 # 連接池最大阻塞等待時(shí)間 spring.redis.lettuce.pool.max-wait=1ms # 超時(shí)時(shí)間 spring.redis.lettuce.shutdown-timeout=100ms
2.4 創(chuàng)建實(shí)體類
存入Redis中的數(shù)據(jù)類型,可以是自定義的一個(gè)類,注意需要加上注解@RedisHash和@Id。存入Redis的數(shù)據(jù)為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 數(shù)據(jù)庫(kù)訪問(wèn)層UserRepository接口
直接繼承CrudRepository接口就行了,不用自己來(lái)實(shí)現(xiàn),需要注意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 實(shí)現(xiàn)Controller
Controller實(shí)現(xiàn)了RESTful風(fēng)格的增刪改查功能,只要把UserRepository注入便可以使用它來(lái)操作:
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接口測(cè)試
本文使用Postman進(jìn)行測(cè)試,結(jié)果顯示的時(shí)間為GMT時(shí)間,每個(gè)功能測(cè)試如下:
(1)新增User

(2)根據(jù)UserId查詢特定User

(3)修改User

(4)刪除一個(gè)User

(5)查詢所有User

在Redis中的數(shù)據(jù)如下所示:

4 總結(jié)
本文通過(guò)實(shí)例講解了如何整合Springboot和Redis,使用的是Repository的方式。
到此這篇關(guān)于Springboot以Repository方式整合Redis的文章就介紹到這了,更多相關(guān)Springboot以Repository方式整合Redis內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 淺談springboot @Repository與@Mapper的區(qū)別
- springboot使用redisRepository和redistemplate操作redis的過(guò)程解析
- springboot使用RedisRepository操作數(shù)據(jù)的實(shí)現(xiàn)
- springboot jpaRepository為何一定要對(duì)Entity序列化
- 解決springboot無(wú)法注入JpaRepository的問(wèn)題
- springboot 沒(méi)法掃描到repository的解決
- springboot不掃描@repository的問(wèn)題及解決
相關(guān)文章
Java EasyExcel讀寫excel如何解決poi讀取大文件內(nèi)存溢出問(wèn)題
這篇文章主要介紹了Java EasyExcel讀寫excel如何解決poi讀取大文件內(nèi)存溢出問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06
Spring如何使用xml創(chuàng)建bean對(duì)象
這篇文章主要介紹了Spring如何使用xml創(chuàng)建bean對(duì)象,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08
使用Java生成32位16進(jìn)制密鑰的代碼實(shí)現(xiàn)
在許多加密和安全應(yīng)用中,生成隨機(jī)的密鑰是至關(guān)重要的一步,密鑰通常以16進(jìn)制形式表示,并且具有特定的長(zhǎng)度,在這篇博客中,我們將探討如何使用Java生成一個(gè)32位長(zhǎng)度的16進(jìn)制密鑰,并展示詳細(xì)的代碼示例和運(yùn)行結(jié)果,需要的朋友可以參考下2024-08-08
Springboot跨域CORS處理實(shí)現(xiàn)原理
這篇文章主要介紹了Springboot跨域CORS處理實(shí)現(xiàn)原理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04
Mybatis-Plus中Mapper的接口文件與xml文件相關(guān)的坑記錄
這篇文章主要介紹了Mybatis-Plus中Mapper的接口文件與xml文件相關(guān)的坑記錄,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01
Spring?Security實(shí)現(xiàn)添加圖片驗(yàn)證功能
這篇文章主要為大家介紹了Spring?Security實(shí)現(xiàn)添加圖片驗(yàn)證功能詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01
selenium+java+chrome環(huán)境搭建的方法步驟
這篇文章主要介紹了selenium+java+chrome環(huán)境搭建的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
深入理解Java8新特性之新日期時(shí)間API的應(yīng)用
自從 14 年發(fā)布 Java 8 以后,我們古老 java.util.Date 終于不再是我們 Java 里操作日期時(shí)間的唯一的選擇,其實(shí) Java 里的日期時(shí)間的相關(guān) API 一直為世猿詬病,今天我們來(lái)了解新的日期時(shí)間API是怎么使用吧2021-11-11
詳解如何使用IntelliJ IDEA新建一個(gè)Servlet項(xiàng)目
這篇文章主要介紹了詳解如何使用IntelliJ IDEA新建一個(gè)Servlet項(xiàng)目,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-11-11

