springboot cache

4332 ワード

Springboot@EnableCachingを使用してcache機能をオンにし、@Cacheable@CachePutなどの注釈でユーザーがcacheを便利に使用できるようにします.cacheは実はデータをキャッシュする場所で、メモリです.このメモリの組織形式はたくさんあります.
hashmapまたはredisなどであってもよく、springbootはcacheを管理するための2つのインタフェースを提供し、CacheManager Cache,CacheManagerはCacheの クラスを するための2つの を するだけである.,Cache は にcacheに する である.springbootでは、 のようなcacheの がいくつか されています.
  • Generic

  • JCache (JSR-107) (EhCache 3, Hazelcast, Infinispan, etc)

  • EhCache 2.x

  • Hazelcast

  • Infinispan

  • Couchbase

  • Redis

  • Caffeine

  • Guava (deprecated)

  • Simple

springboot cache , redis RedisCacheConfiguration, , , , SimpleCacheConfiguration, , 。 redis , :


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

RedisCacheConfiguration jar , cacheManger RedisCacheManager , spring cacheManger, , @ConditionalOnMissingBean(CacheManager.class)。 , application.properties redis , :

# Redis ( 0)
spring.redis.database=0
# Redis
spring.redis.host=127.0.0.1
# Redis
spring.redis.port=6379
# Redis ( )
spring.redis.password=
# ( )
spring.redis.pool.max-active=8
# ( )
spring.redis.pool.max-wait=-1
#
spring.redis.pool.max-idle=8
#
spring.redis.pool.min-idle=0
# ( )
spring.redis.timeout=0

redis cache , , redis redis \xab\xa0 , @cacheput @cahceable key value, redis ,springboot RedisTemplate keySerializer valueSerializer JdkSerializationRedisSerializer, object byte, @cahceput key int , int , byte redis, \xab\xa0 , object 。 , RedisTemplatebean, keySerializer valueSerializer, :
@Configuration  
@EnableCaching
public class RedisConfig {
    @Bean  
    public CacheManager cacheManager(RedisTemplate, ?> redisTemplate) {  
        RedisCacheManager manager = new RedisCacheManager(redisTemplate);  
        manager.setDefaultExpiration(20);//  
        return manager;  
    }  
 
    @Bean  
    public RedisTemplate redisTemplate(RedisConnectionFactory factory) {  
        StringRedisTemplate template = new StringRedisTemplate(factory);  
        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);  
        ObjectMapper om = new ObjectMapper();  
        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);  
        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);  
        jackson2JsonRedisSerializer.setObjectMapper(om);  
        template.setValueSerializer(jackson2JsonRedisSerializer);  
        template.afterPropertiesSet();  
        return template;  
    }  
      
    @Bean  
    public KeyGenerator smpkeyGenerator() {  
        return new KeyGenerator() {  
//            @Override  
            public Object generate(Object target, Method method, Object... params) {  
                StringBuilder sb = new StringBuilder();  
                //sb.append(target.getClass().getSimpleName());  
                //sb.append(method.getName());  
                for (Object o : params) {  
                    sb.append("_").append(o.toString());  
                }  
                return sb.toString();  
            }  
        };  
    }  
}