🌟 前言
歡迎來到我的技術小宇宙!🌌 這里不僅是我記錄技術點滴的后花園,也是我分享學習心得和項目經驗的樂園。📚 無論你是技術小白還是資深大牛,這里總有一些內容能觸動你的好奇心。🔍
🤖 洛可可白:個人主頁
🔥 個人專欄:?前端技術 ?后端技術
🏠 個人博客:洛可可白博客
🐱 代碼獲取:bestwishes0203
📷 封面壁紙:洛可可白wallpaper

這里寫自定義目錄標題
- Spring Boot 中使用 Redis:從入門到實戰
- 一、添加 Redis 依賴
- 二、配置 Redis 連接
- application.properties 示例
- application.yml 示例
- 三、自定義 Redis 配置(可選)
- Redis 配置類
- 四、使用 `RedisTemplate` 進行基本操作
- 1\. 增刪改查操作
- RedisService.java
- 2\. 創建臨時數據并自動刪除
- RedisService.java(臨時數據)
- 3\. 測試 Redis 功能
- RedisController.java
- 五、運行應用
- 六、高級功能
- 1\. 設置數據過期時間
- 示例代碼
- 2\. 使用 Redis 的其他數據結構
- 示例代碼(使用列表)
- 七、總結
- 參考資料
Spring Boot 中使用 Redis:從入門到實戰
在現代的 Spring Boot 應用程序中,Redis 是一種常用的高性能鍵值存儲系統,廣泛用于緩存、消息隊列、分布式鎖等場景。本文將詳細介紹如何在 Spring Boot 項目中集成 Redis,并實現基本的增刪改查操作、設置數據過期時間、創建臨時數據等常用功能。
一、添加 Redis 依賴
在 Spring Boot 項目中,集成 Redis 非常簡單。首先,你需要在項目的 pom.xml
文件中添加以下依賴:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
這個依賴會自動引入 Spring Data Redis 的相關功能,并配置默認的 Redis 客戶端連接。
如果你需要使用 Lettuce 作為 Redis 客戶端(默認客戶端),可以顯式添加 Lettuce 依賴:
<dependency><groupId>io.lettuce.core</groupId><artifactId>lettuce-core</artifactId>
</dependency>
二、配置 Redis 連接
在 application.properties
或 application.yml
文件中配置 Redis 的連接信息。
application.properties 示例
spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password= # 如果設置了密碼
spring.redis.database=0 # 數據庫索引,默認為 0
application.yml 示例
spring:redis:host: localhostport: 6379password: # 如果設置了密碼database: 0 # 數據庫索引,默認為 0
三、自定義 Redis 配置(可選)
如果你需要自定義 RedisTemplate
的序列化方式,可以創建一個配置類。默認情況下,Spring Data Redis 使用 JdkSerializationRedisSerializer
對象序列化器,這可能導致一些問題,例如存儲的鍵值對是二進制格式,難以直接查看。因此,推薦使用 StringRedisSerializer
。
Redis 配置類
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;@Configuration
public class RedisConfig {@Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {RedisTemplate<String, Object> template = new RedisTemplate<>();template.setConnectionFactory(factory);template.setKeySerializer(new StringRedisSerializer());template.setValueSerializer(new StringRedisSerializer());return template;}
}
四、使用 RedisTemplate
進行基本操作
通過注入 RedisTemplate
或 StringRedisTemplate
,你可以輕松地操作 Redis。以下是一些常見的操作示例。
1. 增刪改查操作
RedisService.java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;import java.util.concurrent.TimeUnit;@Service
public class RedisService {@Autowiredprivate RedisTemplate<String, Object> redisTemplate;// 存儲數據public void set(String key, Object value) {redisTemplate.opsForValue().set(key, value);}// 存儲數據并設置過期時間public void setWithExpire(String key, Object value, long timeout, TimeUnit unit) {redisTemplate.opsForValue().set(key, value, timeout, unit);}// 獲取數據public Object get(String key) {return redisTemplate.opsForValue().get(key);}// 刪除數據public void delete(String key) {redisTemplate.delete(key);}
}
2. 創建臨時數據并自動刪除
通過設置過期時間,可以創建臨時數據。當數據過期時,Redis 會自動刪除它們。
RedisService.java(臨時數據)
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;import java.util.concurrent.TimeUnit;@Service
public class RedisService {@Autowiredprivate RedisTemplate<String, Object> redisTemplate;// 創建臨時數據并設置過期時間public void createTemporaryData(String key, Object value, long timeout, TimeUnit unit) {redisTemplate.opsForValue().set(key, value, timeout, unit);}
}
3. 測試 Redis 功能
創建一個控制器來測試 Redis 功能。
RedisController.java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;@RestController
@RequestMapping("/api/redis")
public class RedisController {@Autowiredprivate RedisService redisService;@PostMapping("/set")public String set(@RequestParam String key, @RequestParam String value) {redisService.set(key, value);return "Set successfully";}@GetMapping("/get")public Object get(@RequestParam String key) {return redisService.get(key);}@DeleteMapping("/delete")public String delete(@RequestParam String key) {redisService.delete(key);return "Deleted successfully";}@PostMapping("/setWithExpire")public String setWithExpire(@RequestParam String key, @RequestParam String value, @RequestParam long timeout) {redisService.setWithExpire(key, value, timeout, TimeUnit.SECONDS);return "Set with expire successfully";}
}
五、運行應用
確保 Redis 服務器正在運行,然后啟動 Spring Boot 應用。你可以通過以下方式測試:
- 存儲數據:
POST http://localhost:8080/api/redis/set?key=myKey&value=myValue
- 獲取數據:
GET http://localhost:8080/api/redis/get?key=myKey
- 刪除數據:
DELETE http://localhost:8080/api/redis/delete?key=myKey
- 存儲帶過期時間的數據:
POST http://localhost:8080/api/redis/setWithExpire?key=myKey&value=myValue&timeout=10
六、高級功能
1. 設置數據過期時間
在 Redis 中,可以通過設置過期時間(TTL)來讓數據在指定時間后自動刪除。這在實現緩存、會話管理等場景中非常有用。
示例代碼
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;import java.util.concurrent.TimeUnit;@Service
public class RedisService {@Autowiredprivate RedisTemplate<String, Object> redisTemplate;// 設置數據過期時間public void setWithExpire(String key, Object value, long timeout, TimeUnit unit) {redisTemplate.opsForValue().set(key, value, timeout, unit);}
}
2. 使用 Redis 的其他數據結構
Redis 不僅支持簡單的鍵值對存儲,還支持多種數據結構,如列表、集合、有序集合等。這些數據結構可以用于實現更復雜的業務邏輯。
示例代碼(使用列表)
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;import java.util.List;@Service
public class RedisService {@Autowiredprivate RedisTemplate<String, Object> redisTemplate;// 向列表中添加元素public void addToList(String key, Object value) {redisTemplate.opsForList().rightPush(key, value);}// 從列表中獲取所有元素public List<Object> getAllFromList(String key) {return redisTemplate.opsForList().range(key, 0, -1);}
}
七、總結
在 Spring Boot 項目中集成 Redis 是非常簡單的,通過 spring-boot-starter-data-redis
依賴,你可以快速實現 Redis 的基本操作和高級功能。本文介紹了如何添加 Redis 依賴、配置 Redis 連接、自定義 RedisTemplate
、實現增刪改查操作、設置數據過期時間以及使用 Redis 的其他數據結構。
希望這些內容能幫助你更好地理解和使用 Redis。如果你有任何問題或建議,歡迎在評論區留言。
參考資料
- Spring Boot 官方文檔
- Spring Data Redis 官方文檔
- Redis 官方文檔
如果對你有幫助,點贊👍、收藏💖、關注🔔是我更新的動力!👋🌟🚀