spring cache 有时效性么
发布网友
发布时间:2022-05-03 08:33
我来回答
共2个回答
热心网友
时间:2023-10-17 00:36
Spring Cache是要看你使用的实现,具体在SpringContext中是cacheManager Bean。默认内置3种实现,EHCache,Redis,ConcurrentHashMap。使用Spring对于EHCache可以使用一楼的配置,可以有实效的。
使用Redis在缓存的时候也可以使用实效的,但是Spring Cache没有提供便利的API,因此还无法利用Redis的默认缓存时限,需要自己更改Sprng context源码
ConcurrentHashMap实现的更无法使用时效*。
三种配置如下:
EHCache:
<cache:annotation-driven />
<!-- EhCache library setup -->
<bean id="ehcache" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"
p:config-location="classpath:ehcache.xml"
p:shared="true"/>
<bean id="cacheManager"
class="org.springframework.cache.ehcache.EhCacheCacheManager"
p:cache-manager-ref="ehcache"/>
Redis:
<bean id="cacheManager" class="org.springframework.data.redis.cache.RedisCacheManager">
<constructor-arg index="0" ref="redisTemplate" />
</bean>
Java ConcurrentHashMap:
<bean id="cacheManager"
class="org.springframework.cache.concurrent.ConcurrentMapCacheManager">
</bean>
热心网友
时间:2023-10-17 00:36
Spring Cache是要看你使用的实现,具体在SpringContext中是cacheManager Bean。默认内置3种实现,EHCache,Redis,ConcurrentHashMap。使用Spring对于EHCache可以使用一楼的配置,可以有实效的。
使用Redis在缓存的时候也可以使用实效的,但是Spring Cache没有提供便利的API,因此还无法利用Redis的默认缓存时限,需要自己更改Sprng context源码
ConcurrentHashMap实现的更无法使用时效*。
三种配置如下:
EHCache:
<cache:annotation-driven />
<!-- EhCache library setup -->
<bean id="ehcache" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"
p:config-location="classpath:ehcache.xml"
p:shared="true"/>
<bean id="cacheManager"
class="org.springframework.cache.ehcache.EhCacheCacheManager"
p:cache-manager-ref="ehcache"/>
Redis:
<bean id="cacheManager" class="org.springframework.data.redis.cache.RedisCacheManager">
<constructor-arg index="0" ref="redisTemplate" />
</bean>
Java ConcurrentHashMap:
<bean id="cacheManager"
class="org.springframework.cache.concurrent.ConcurrentMapCacheManager">
</bean>
热心网友
时间:2023-10-17 00:36
Spring Cache默认自带的基于ConcurrentHashMap的CacheManager实现是没有自动过期这一功能的,需要手工通过@CacheEvict 来剔除缓存数据。TTL、TTI等高级特性等高级特性需要使用EhCache来实现
热心网友
时间:2023-10-17 00:36
Spring Cache默认自带的基于ConcurrentHashMap的CacheManager实现是没有自动过期这一功能的,需要手工通过@CacheEvict 来剔除缓存数据。TTL、TTI等高级特性等高级特性需要使用EhCache来实现