From c38e2de4dc37e444cf78612317ee6a5445c8954f Mon Sep 17 00:00:00 2001
From: WYZ-62 <15129410+pluto52@user.noreply.gitee.com>
Date: Thu, 9 Jul 2026 21:43:09 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E4=B8=BA=20spring-demo=20=E6=96=B0?=
=?UTF-8?q?=E5=A2=9E=20Redis=20=E5=B7=A5=E5=85=B7=E4=B8=8E=E6=B5=8B?=
=?UTF-8?q?=E8=AF=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Code/spring-demo/pom.xml | 5 +
.../wyz/springdemo/config/RedisConfig.java | 29 +++
.../com/wyz/springdemo/util/RedisUtil.java | 109 +++++++++++
.../src/main/resources/application.yml | 12 ++
.../com/wyz/springdemo/RedisUtilTest.java | 174 ++++++++++++++++++
5 files changed, 329 insertions(+)
create mode 100644 Code/spring-demo/src/main/java/com/wyz/springdemo/config/RedisConfig.java
create mode 100644 Code/spring-demo/src/main/java/com/wyz/springdemo/util/RedisUtil.java
create mode 100644 Code/spring-demo/src/test/java/com/wyz/springdemo/RedisUtilTest.java
diff --git a/Code/spring-demo/pom.xml b/Code/spring-demo/pom.xml
index a90248d..347aa54 100644
--- a/Code/spring-demo/pom.xml
+++ b/Code/spring-demo/pom.xml
@@ -51,6 +51,11 @@
1.8.0
+
+ org.springframework.boot
+ spring-boot-starter-data-redis
+
+
mysql
mysql-connector-java
diff --git a/Code/spring-demo/src/main/java/com/wyz/springdemo/config/RedisConfig.java b/Code/spring-demo/src/main/java/com/wyz/springdemo/config/RedisConfig.java
new file mode 100644
index 0000000..e529312
--- /dev/null
+++ b/Code/spring-demo/src/main/java/com/wyz/springdemo/config/RedisConfig.java
@@ -0,0 +1,29 @@
+package com.wyz.springdemo.config;
+
+import org.springframework.cache.annotation.EnableCaching;
+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.GenericJackson2JsonRedisSerializer;
+import org.springframework.data.redis.serializer.StringRedisSerializer;
+
+@Configuration
+@EnableCaching
+public class RedisConfig {
+
+ @Bean
+ public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) {
+ RedisTemplate redisTemplate = new RedisTemplate<>();
+ GenericJackson2JsonRedisSerializer jsonRedisSerializer = new GenericJackson2JsonRedisSerializer();
+ StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
+
+ redisTemplate.setConnectionFactory(redisConnectionFactory);
+ redisTemplate.setKeySerializer(stringRedisSerializer);
+ redisTemplate.setHashKeySerializer(stringRedisSerializer);
+ redisTemplate.setValueSerializer(jsonRedisSerializer);
+ redisTemplate.setHashValueSerializer(jsonRedisSerializer);
+ redisTemplate.afterPropertiesSet();
+ return redisTemplate;
+ }
+}
diff --git a/Code/spring-demo/src/main/java/com/wyz/springdemo/util/RedisUtil.java b/Code/spring-demo/src/main/java/com/wyz/springdemo/util/RedisUtil.java
new file mode 100644
index 0000000..f3c4583
--- /dev/null
+++ b/Code/spring-demo/src/main/java/com/wyz/springdemo/util/RedisUtil.java
@@ -0,0 +1,109 @@
+package com.wyz.springdemo.util;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Set;
+import java.util.concurrent.TimeUnit;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Component;
+
+@Component
+public class RedisUtil {
+
+ private final RedisTemplate redisTemplate;
+
+ public RedisUtil(RedisTemplate redisTemplate) {
+ this.redisTemplate = redisTemplate;
+ }
+
+ public boolean expire(String key, long timeout, TimeUnit unit) {
+ Boolean result = redisTemplate.expire(key, timeout, unit);
+ return Boolean.TRUE.equals(result);
+ }
+
+ public long getExpire(String key) {
+ Long expire = redisTemplate.getExpire(key);
+ return expire == null ? 0L : expire;
+ }
+
+ public boolean hasKey(String key) {
+ Boolean result = redisTemplate.hasKey(key);
+ return Boolean.TRUE.equals(result);
+ }
+
+ public boolean delete(String key) {
+ Boolean result = redisTemplate.delete(key);
+ return Boolean.TRUE.equals(result);
+ }
+
+ public long delete(Collection keys) {
+ Long deleted = redisTemplate.delete(keys);
+ return deleted == null ? 0L : deleted;
+ }
+
+ public Object get(String key) {
+ return key == null ? null : redisTemplate.opsForValue().get(key);
+ }
+
+ public T get(String key, Class clazz) {
+ Object value = get(key);
+ if (value == null) {
+ return null;
+ }
+ return clazz.cast(value);
+ }
+
+ public boolean set(String key, Object value) {
+ redisTemplate.opsForValue().set(key, value);
+ return true;
+ }
+
+ public boolean set(String key, Object value, long timeout, TimeUnit unit) {
+ redisTemplate.opsForValue().set(key, value, timeout, unit);
+ return true;
+ }
+
+ public long increment(String key, long delta) {
+ Long result = redisTemplate.opsForValue().increment(key, delta);
+ return result == null ? 0L : result;
+ }
+
+ public long decrement(String key, long delta) {
+ Long result = redisTemplate.opsForValue().increment(key, -delta);
+ return result == null ? 0L : result;
+ }
+
+ public Object hGet(String key, String item) {
+ return redisTemplate.opsForHash().get(key, item);
+ }
+
+ public boolean hSet(String key, String item, Object value) {
+ redisTemplate.opsForHash().put(key, item, value);
+ return true;
+ }
+
+ public boolean hSet(String key, String item, Object value, long timeout, TimeUnit unit) {
+ redisTemplate.opsForHash().put(key, item, value);
+ return expire(key, timeout, unit);
+ }
+
+ public long hDelete(String key, Object... items) {
+ Long result = redisTemplate.opsForHash().delete(key, items);
+ return result == null ? 0L : result;
+ }
+
+ public Set