spring boot整合redis,设置缓存过期时间
发布日期:2021-05-10 23:41:50 浏览次数:29 分类:精选文章

本文共 3668 字,大约阅读时间需要 12 分钟。

Spring Boot 整合 Redis

Redis 是一款广泛使用的开源数据库,支持多种数据结构,并且在分布式系统中具有重要的地位。在 Spring Boot 应用中整合 Redis,能够显著提升应用的性能和灵活性。本文将引导读者完成 Redis 与 Spring Boot 的集成配置,并通过代码示例展示 Redis 的实际应用场景。

前置条件

在开始配置之前,需要确保Redis 服务器已正确启动。无论是本地服务还是远程服务器,都需确保 Redis 服务运行中,否则会导致连接超时。

Pom 文件依赖

将Redis 记录到项目的依赖管理文件中,确保相关组件正常加载。

org.springframework.boot
spring-boot-starter-data-redis

配置应用.properties

由于 Redis 连接信息需要配置,我将提供一个标准化的配置示例。

# Redis 基本配置
spring.redis.host= localhost
spring.redis.port= 6379
spring.redis.password= 如果不使用密码,默认为空
spring.redis.database= 0 # 数据库索引,默认为 0
# Redis 连接池配置
spring.redis.jedis.pool.max-active= 20 # 最大连接数
spring.redis.jedis.pool.max-wait= -1 # 等待时间无限制
spring.redis.jedis.pool.min-idle= 10 # 最小空闲连接数
spring.redis.jedis.pool.max-idle= 10 # 最大空闲连接数
spring.redis.timeout= 1000 # 超时时间,单位:毫秒

缓存测试

完成配置后,可以进行一些基本的缓存测试,确保 Redis 连接正常,并且缓存操作无误。

RedisTemplate 操作

在 Spring Boot 中,RedisTemplate 是主要的缓存接口。此外, Lara 提供了许多便捷的操作方式,简化了数据库操作。

import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.coreFileDialoglastBeyond
public class SampleCacheTest {
@Autowired
private StringRedisTemplate redisTemplate;
@Test
public void setCache() {
String key = "user_info";
String value = "123";
redisTemplate.opsForValue().set(key, value);
System.out.println("缓存已存入:" + value);
}
@Test
public void getCache() {
String key = "user_info";
Object value = redisTemplate.opsForValue().get(key);
System.out.println("取出缓存结果:" + value);
}
@Test
public void deleteCache() {
String key = "user_info";
Boolean result = redisTemplate.delete(key);
System.out.println("删除结果:" + result);
}
}

项目开发中的实际应用

在日常的项目开发中,Redis 服务层接口和实现类是关键组件。以下是一个简要的代码示例,供参考。

RedisService 接口

public interface RedisService {
boolean cacheValue(String key, String value, long time);
boolean cacheValue(String key, String value);
boolean containsValueKey(String key);
boolean containsSetKey(String key);
boolean containsListKey(String key);
boolean containsKey(String key);
String getValue(String key);
boolean removeValue(String key);
boolean removeSet(String key);
boolean removeList(String key);
// 其他方法类似
}

RedisServiceImpl 实现类

import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Set;
@Service
public class RedisServiceImpl implements RedisService {
private static final String PREFIX = "info:";
private final RedisTemplate redisTemplate;
public RedisServiceImpl(RedisTemplate redisTemplate) { this.redisTemplate = redisTemplate; }
@Override
public boolean cacheValue(String key, String value, long time) {
try {
String fullKey = PREFIX + key;
redisTemplate.opsForValue().set(fullKey, value);
if (time > 0) {
redisTemplate.expire(fullKey, time, TimeUnit.SECONDS);
}
return true;
} catch (Throwable e) {
// 记录日志,处理异常情况
log.error("存储缓存失败:key=["" + key + "]", value=["" + value + "]", e);
}
return false;
}
// 其他方法类似
}

TimeUnit 源码

以下为 TimeUnit 枚举类的部分代码,全面了解并正确处理缓存过期时间至关重要。

public enum TimeUnit {
NANOSECONDS,
MICROSECONDS,
MILLISECONDS,
SECONDS,
MINUTES,
HOURS,
DAYS;
// 具体实现细节省略
}

常见问题处理

注意事项

  • 服务器状态检查:确保Redis服务运行,避免存入失败。
  • 连接池设置:根据实际应用需求调整连接池参数。
  • 超时处理:合理设置超时时间,防止应用长时间等待。

如果您在开发过程中遇到问题,可以参考 Spring Boot 官方文档和 Redis 致力团队的资料,寻求更多解决方案。

希望这份优化的内容能够为Spring Boot 整合 Redis 的学习和应用提供有价值的参考。技术道路虽然复杂,但每一次的攻克都是对自身能力的提升。

上一篇:Linux分享 - 安装Mysql 5.7
下一篇:第7章 :视频展示页开发(7-37 微信api菜单操作 — 7-41 下载视频到本地)

发表评论

最新留言

关注你微信了!
[***.104.42.241]2025年04月23日 07时58分41秒