日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
SpringBoot整合Redis緩存具體方法

無(wú)法支撐這么大的數(shù)據(jù)訪問(wèn)量,redis使用的時(shí)候可以單獨(dú)利用客戶端引入jar包操作即可,實(shí)際項(xiàng)目中都是和框架進(jìn)行整合的比較多,此處演示利用springboot整合

新蔡網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,新蔡網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為新蔡上千提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的新蔡做網(wǎng)站的公司定做!

1.首先導(dǎo)入使用Maven導(dǎo)入jar包


  
           
   
    org.springframework.boot
           
   
    spring-boot-starter-data-redis
   
  
  
       
   
    com.alibaba
       
   
    fastjson
       
   
    1.2.62
   
  

2.在application.properties配置信息

# Redis數(shù)據(jù)庫(kù)索引(默認(rèn)為0)  
spring.redis.database=0  
# Redis服務(wù)器地址  
spring.redis.host=localhost
# Redis服務(wù)器連接端口  
spring.redis.port=6379  
# Redis服務(wù)器連接密碼(默認(rèn)為空)  
spring.redis.password=123456
# 連接池最大連接數(shù)(使用負(fù)值表示沒(méi)有限制)  
spring.redis.pool.max-active=200  
# 連接池最大阻塞等待時(shí)間(使用負(fù)值表示沒(méi)有限制)  
spring.redis.pool.max-wait=-1  
# 連接池中的最大空閑連接  
spring.redis.pool.max-idle=10
# 連接池中的最小空閑連接  
spring.redis.pool.min-idle=0  
# 連接超時(shí)時(shí)間(毫秒)  
spring.redis.timeout=1000ms

3.編寫Redis工具類

@Configuration
@ConditionalOnClass(RedisOperations.class)      //系統(tǒng)中有RedisOperations類時(shí)
@EnableConfigurationProperties(RedisProperties.class)  //啟動(dòng)RedisProperties這個(gè)類
@EnableCaching

// www.1b23.com
public class RedisConfig extends CachingConfigurerSupport {
   @Autowired
   RedisTemplate redisTemplate;
   // 配置緩存管理器
   @Bean
   public RedisCacheManager cacheManager(RedisConnectionFactory connectionFactory) {
       LettuceConnectionFactory jedisConnectionFactory = (LettuceConnectionFactory) redisTemplate.getConnectionFactory();
       jedisConnectionFactory.setDatabase(2);      //指定dbindex
       redisTemplate.setConnectionFactory(jedisConnectionFactory);
       jedisConnectionFactory.resetConnection();

       RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig()
               .entryTtl(Duration.ofSeconds(60*20)) // 20分鐘緩存失效
               // 設(shè)置key的序列化方式
//                .entryTtl(Duration.ofSeconds(10))
               .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer()))
               // 設(shè)置value的序列化方式
               .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new FastJsonRedisSerializer(Object.class)))
               // 不緩存null值
               .disableCachingNullValues();
       RedisCacheManager redisCacheManager = RedisCacheManager.builder(connectionFactory)
               .cacheDefaults(config)
               .transactionAware()
               .build();
       return redisCacheManager;
   }
}
package com.FireService.config;
import java.nio.charset.Charset;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.SerializationException;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.parser.ParserConfig;
import com.alibaba.fastjson.serializer.SerializerFeature;

public class FastJsonRedisSerializer
  
    implements RedisSerializer
   
     {    public static final Charset DEFAULT_CHARSET = Charset.forName(
    "UTF-8");    private Class
    
      clazz;    static {        ParserConfig.getGlobalInstance().addAccept(
     "com.FireService");    }    public FastJsonRedisSerializer(Class
     
       clazz) {        super();        this.clazz = clazz;    }    @Override    public byte[] serialize(T t) throws SerializationException {        
      if (null == t) {            
      return new byte[0];        }        
      return JSON.toJSONString(t, SerializerFeature.WriteClassName).getBytes(DEFAULT_CHARSET);    }    @Override    public T deserialize(byte[] bytes) throws SerializationException {        
      if (null == bytes || bytes.length return null;        }        String str = new String(bytes, DEFAULT_CHARSET);        
      return (T) JSON.parseObject(str, clazz);    } } 
     
    
   
  

4.SpringBoot有關(guān)緩存的幾個(gè)注解

@Cacheable:查詢 可選屬性: cacheNames/value:指定緩存組件的名字; key:緩存數(shù)據(jù)使用的key,可以用來(lái)指定。默認(rèn)即使用方法參數(shù)的值 keyGenerator:key的生成器,可以自己指定key的生成器的組件id

//自定義配置類配置keyGenerator
@Configuration
public class MyCacheConfig {
   @Bean("myKeyGenerator")
   public KeyGenerator keyGenerator(){
       return new KeyGenerator() {
           @Override
           public Object generate(Object target, Method method, Object... params) {
               return method.getName()+"["+ Arrays.asList(params).toString() +"]";
           }
       };
   }
}

cacheManager:指定緩存管理器;或者cacheResolver獲取指定解析器

condition:指定符合條件的情況下才緩存;如condition=”#id>0″

unless:否定緩存,當(dāng)unless指定的條件為true,方法的返回值不會(huì)被緩存,可以獲取到結(jié)果進(jìn)行判斷;如unless=”#result==null”;

sync:是否使用異步模式

例如:

@Cacheable(value = "RedisInfo", key = "#root.methodName+'['+#account+']'")
@ResponseBody
@RequestMapping("/RedisTest")
public Result findUserOrder(String account) throws Exception{
   if(account!=null) {
       List> list=orderFindGoods.findUserOrder(account);        return Results.successWithData(list, BaseEnums.SUCCESS.code(), BaseEnums.SUCCESS.desc());    }else {        return Results.failure();    } } 

運(yùn)行項(xiàng)目查看結(jié)果

1.第一次訪問(wèn)

查看Druid連接信息


標(biāo)題名稱:SpringBoot整合Redis緩存具體方法
文章出自:http://www.5511xx.com/article/djoisep.html