如何在springboot中设置缓存时间

时间:2017-08-17 06:44:49

标签: java spring spring-mvc spring-boot ehcache

enter image description here我使用springboot发送验证码。设置验证码的有效时间为两分钟,并在两分钟后到期。我可以通过设置缓存来完成吗?或其他方式。谁能帮帮我?

2 个答案:

答案 0 :(得分:1)

您可以将Redis用于此目的。

Redis是一个开源的内存数据结构存储,可用作缓存。它提供了一种为密钥添加到期时间的方法。到期时间后,密钥将自动从Redis无效/删除。

在你的专家中,给出以下依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

在SpringBoot应用程序中,您需要定义以下属性:

spring.redis.host=
spring.redis.port=

您可以将到期时间设置为:

public void put(final T key, final T hashKey, final Object value, final long exiryInMilliseconds) {
        hashOps.put(key, hashKey, value);
        if (exiryInMilliseconds > 0) {
            redisTemplate.expire(key, exiryInMilliseconds, TimeUnit.MILLISECONDS);
        }

    }

RedisTemplate&amp; HashOperations由Redis核心软件包提供。您可以像这样使用Spring注入它们,也可以通过自己创建实例来使用它们。

@Resource
private RedisTemplate<T, T> redisTemplate;

@Resource(name = "redisTemplate")
private  <T, T, Object> hashOps;

在检索时,如果您这样做:

hashOps.get(key, hashKey);

如果过期时间过去/或密钥不存在,它将返回 null 。否则你会得到你的对象。

答案 1 :(得分:1)

您可以尝试ehcache3,它是专为此类用例而设计的!

请查看文档,尤其是the part about expiry

然后,一起破解你的项目,有许多ehcache3 +春季启动示例theretherethere,还有一个额外的好处,你可以依赖{ {3}},并且不依赖于供应商。