使用memcached和spring boot的不同对象的自定义到期日期

时间:2018-05-15 13:20:39

标签: spring spring-boot memcached

我在Spring boot项目中使用this client连接到我的群集上运行的memcached实例。

一切正常但是到目前为止我只能设置所有缓存的到期日期,这对我来说不方便,我希望能够设置自定义到期日期,就像它可以在{{{{{{{{ 1}} memcached

有人有任何想法吗?客户看起来并不灵活。

2 个答案:

答案 0 :(得分:2)

您也可以使用memcached-spring-boot库为每个缓存名称设置自定义过期时间。您可以通过memcached.cache.expirations配置属性来执行此操作。 E.g:

 memcached.cache:
     servers: example1.com:11211,example2.com:11211
     mode: static
     expirations: 86400, cache_name1:3600, cache_name2:108000 

此处86400代表全局过期(用于所有缓存)。如果您希望每个缓存具有不同的过期值,则可以将其设置为cache_name1:3600(名称为cache_name1的缓存将在3600秒内到期)。

在这种情况下,您的缓存配置在源代码之外,因此您可以更轻松地为每个不同的环境配置不同的到期时间(例如 dev prod )。

答案 1 :(得分:0)

这是因为Spring没有对自定义过期的本机支持。我建议你使用simple-spring-memcached和Spring Boot来启用自定义过期。如果您使用此库,您有两个选择:

  1. 使用simple-spring-memcached提供的注释。它们支持自定义过期。
  2. 使用ExtendedSSMCacheManager提供的simple-spring-memcached与Spring Boot的本机缓存集成。它允许您将到期时间设置为缓存名称的一部分,如下所示:

    @Cacheable("default#3600")   
    public ComplexSerializableResult compute(Long input) {
        // ...
        return result;   
    }
    

    此处default是缓存名称,过期时间设置为3600秒。

  3. 有关如何使用Spring Boot设置simple-spring-memcached的详细信息,请参阅SSM wiki或MemCachier的Spring Boot documentation

    有关如何在Spring Boot中使用simple-spring-memcached的分步说明,请参阅此tutorial。它是为Heroku平台创建的,但独立于Heroku。