网站建设资讯

NEWS

网站建设资讯

SpringBoot中怎么配置单点Redis缓存

今天就跟大家聊聊有关SpringBoot中怎么配置单点redis缓存,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

创新互联是一家朝气蓬勃的网站建设公司。公司专注于为企业提供信息化建设解决方案。从事网站开发,网站制作,网站设计,网站模板,微信公众号开发,软件开发,小程序制作,十多年建站对成都广告设计等多个领域,拥有丰富的网站建设经验。

import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cache.interceptor.KeyGenerator;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;

import java.lang.reflect.Method;

/**
 * redis 缓存配置;
 * 

 * 注意:RedisCacheConfig这里也可以不用继承:CachingConfigurerSupport,也就是直接一个普通的Class就好了;  * 

 * 这里主要我们之后要重新实现 key的生成策略,只要这里修改KeyGenerator,其它位置不用修改就生效了。  * 

 * 普通使用普通类的方式的话,那么在使用@Cacheable的时候还需要指定KeyGenerator的名称;这样编码的时候比较麻烦。  *  * @create 2017-12-13 12:45  **/ @Configuration @EnableCaching//启用缓存,这个注解很重要; public class RedisCacheConfig extends CachingConfigurerSupport {     /**      * 缓存管理器.      *      * @param redisTemplate      * @return      */     @Bean     public CacheManager cacheManager(RedisTemplate redisTemplate) {         RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate);         //设置缓存过期时间         cacheManager.setDefaultExpiration(10000);         return cacheManager;     }     /**      * redis模板操作类,类似于jdbcTemplate的一个类;      * 

     * 虽然CacheManager也能获取到Cache对象,但是操作起来没有那么灵活;      * 

     * 这里在扩展下:RedisTemplate这个类不见得很好操作,我们可以在进行扩展一个我们      * 

     * 自己的缓存类,比如:RedisStorage类;      *      * @param factory : 通过Spring进行注入,参数在application.properties进行配置;      * @return      */     @Bean     public RedisTemplate redisTemplate(RedisConnectionFactory factory) {         StringRedisTemplate template = new StringRedisTemplate(factory);         setSerializer(template);//设置序列化工具         template.afterPropertiesSet();         return template;     }     private void setSerializer(StringRedisTemplate template) {         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);     }     /**      * 自定义key.      * 此方法将会根据类名+方法名+所有参数的值生成唯一的一个key,即使@Cacheable中的value属性一样,key也会不一样。      */     @Override     public KeyGenerator keyGenerator() {         return new KeyGenerator() {             @Override             public Object generate(Object o, Method method, Object... objects) {                 StringBuilder sb = new StringBuilder();                 sb.append(o.getClass().getName());                 sb.append(method.getName());                 for (Object obj : objects) {                     sb.append(obj.toString());                 }                 return sb.toString();             }         };     } }

########################################################
###REDIS (RedisProperties) redis基本配置;
########################################################
# database name
spring.redis.database=0
# server host1
spring.redis.host=127.0.0.1
# server password
#spring.redis.password=
#connection port
spring.redis.port=6379
# pool settings ...
spring.redis.pool.max-idle=8
spring.redis.pool.min-idle=0
spring.redis.pool.max-active=8
spring.redis.pool.max-wait=-1
# name of Redis server
#spring.redis.sentinel.master=
# comma-separated list of host:port pairs
#spring.redis.sentinel.nodes=

看完上述内容,你们对SpringBoot中怎么配置单点Redis缓存有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。


当前名称:SpringBoot中怎么配置单点Redis缓存
文章链接:http://cdweb.net/article/iijico.html