我需要为我拥有的每个实体设置全局 TTL,并且它应该可以在一个地方进行配置。
有机会通过 @RedisHash 注释来做到这一点:
@RedisHash(value = "persons",timeToLive = 100)
public class Person{
...
}
或者我可以有一个领域
public class Person{
@TimeToLeave
Long ttl;
}
但在这种情况下,我无法在一处更改它,而且不太舒服
来维护它。
我在 application.properties 中有一个属性:
app.redis.ttl=100
如果有机会在财产层面上改变它,那就太棒了。
您可以通过创建子类来配置设置KeyspaceConfiguration
并配置@EnableRedisRepositories
。全局 TTL 没有基于属性的配置。
@EnableRedisRepositories(keyspaceConfiguration = MyKeyspaceConfiguration.class)
public class MyConfig {
}
public class MyKeyspaceConfiguration extends KeyspaceConfiguration {
@Override
public boolean hasSettingsFor(Class<?> type) {
return true;
}
@Override
public KeyspaceSettings getKeyspaceSettings(Class<?> type) {
KeyspaceSettings keyspaceSettings = new KeyspaceSettings(type, "my-keyspace");
keyspaceSettings.setTimeToLive(3600L);
return keyspaceSettings;
}
}
源自KeyspaceConfiguration
旨在提供Iterable<KeyspaceSettings> initialConfiguration()
首先,但由于您想将该设置应用于所有类,因此就地创建KeyspaceSettings
更有意义。
您可能还想缓存KeyspaceSettings
不要在 Java 8 中创建实例Map.computeIfAbsent(…)
会很合适。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)