介紹SpringBoot 整合 Redis 快取
無法支撐這麼大的資料訪問量,redis使用的時候可以單獨利用客戶端引入jar包操作即可,實際專案中都是和框架進行整合的比較多,此處演示利用springboot整合 |
1.首先匯入使用Maven匯入jar包
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.62</version> </dependency>
2.在application.properties配置資訊
# Redis資料庫索引(預設為0) spring.redis.database=0 # Redis伺服器地址 spring.redis.host=localhost # Redis伺服器連線埠 spring.redis.port=6379 # Redis伺服器連線密碼(預設為空) spring.redis.password=123456 # 連線池最大連線數(使用負值表示沒有限制) spring.redis.pool.max-active=200 # 連線池最大阻塞等待時間(使用負值表示沒有限制) spring.redis.pool.max-wait=-1 # 連線池中的最大空閒連線 spring.redis.pool.max-idle=10 # 連線池中的最小空閒連線 spring.redis.pool.min-idle=0 # 連線超時時間(毫秒) spring.redis.timeout=1000ms
3.編寫Redis工具類
@Configuration @ConditionalOnClass(RedisOperations.class) //系統中有RedisOperations類時 @EnableConfigurationProperties(RedisProperties.class) //啟動RedisProperties這個類 @EnableCaching // 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分鐘快取失效 // 設定key的序列化方式 // .entryTtl(Duration.ofSeconds(10)) .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer())) // 設定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<T> implements RedisSerializer<T> { public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8"); private Class<T> clazz; static { ParserConfig.getGlobalInstance().addAccept("com.FireService"); } public FastJsonRedisSerializer(Class<T> 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 <= 0) { return null; } String str = new String(bytes, DEFAULT_CHARSET); return (T) JSON.parseObject(str, clazz); } }
4.SpringBoot有關快取的幾個註解
@Cacheable:查詢
可選屬性:
cacheNames/value:指定快取元件的名字;
key:快取資料使用的key,可以用來指定。預設即使用方法引數的值
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:否定快取,當unless指定的條件為true,方法的返回值不會被快取,可以獲取到結果進行判斷;如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<Map<String, Object>> list=orderFindGoods.findUserOrder(account); return Results.successWithData(list, BaseEnums.SUCCESS.code(), BaseEnums.SUCCESS.desc()); }else { return Results.failure(); } }
執行專案檢視結果
1.第一次訪問
檢視Druid連線資訊
原文地址:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2683992/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- redis快取介紹Redis快取
- SpringBoot整合Redis快取Spring BootRedis快取
- SpringBoot中整合Redis(快取篇)Spring BootRedis快取
- SpringBoot快取管理(二) 整合Redis快取實現Spring Boot快取Redis
- 15.SpringBoot整合Redis快取實現Spring BootRedis快取
- Springboot 整合 SpringCache 使用 Redis 作為快取Spring BootGCRedis快取
- 高手如何處理快取:SpringBoot整合Redis實現快取處理(AOP技術)!快取Spring BootRedis
- SpringBoot+Redis作為二級快取整合的基本DemoSpring BootRedis快取
- springboot +lettuce +redis 快取使用Spring BootRedis快取
- phpob快取原理介紹PHP快取
- 優雅的快取解決方案--SpringCache和Redis整合(SpringBoot)快取GCRedisSpring Boot
- SpringBoot 整合快取效能之王 CaffeineSpring Boot快取
- Ehcache介紹及整合Spring實現快取記憶體Spring快取記憶體
- SpringBoot 註解呼叫Redis快取Spring BootRedis快取
- 快取融合(Cache Fusion)介紹快取
- springboot整合redis2.x,使用spring註解進行快取Spring BootRedis快取
- springboot註解方式使用redis快取Spring BootRedis快取
- SpringBoot中使用Redis實現快取Spring BootRedis快取
- 【SpringBoot】結合Redis實現快取Spring BootRedis快取
- Caffeine快取的簡單介紹快取
- Spring Boot 整合 Redis 實現快取操作Spring BootRedis快取
- MyBatis中的一級快取和二級快取介紹MyBatis快取
- SpringBoot快取管理(三) 自定義Redis快取序列化機制Spring Boot快取Redis
- SpringBoot中Shiro快取使用Redis、EhcacheSpring Boot快取Redis
- SpringBoot2 基礎案例(08):整合Redis資料庫,實現快取管理Spring BootRedis資料庫快取
- SpringBoot2.1版本的個人應用開發框架 - 整合Redis快取Spring Boot框架Redis快取
- 瀏覽器快取機制介紹瀏覽器快取
- 分散式快取GemFire架構介紹分散式快取架構
- Redis整合Spring結合使用快取例項RedisSpring快取
- springboot整合redis?Spring BootRedis
- SpringBoot整合RedisSpring BootRedis
- SpringBoot 整合 RedisSpring BootRedis
- 【SpringBoot】整合RedisSpring BootRedis
- SpringBoot 實戰 (十一) | 整合資料快取 CacheSpring Boot快取
- Redis快取擊穿、快取穿透、快取雪崩Redis快取穿透
- [Redis]快取穿透/快取擊穿/快取雪崩Redis快取穿透
- SpringBoot註解使用redis做快取總結Spring BootRedis快取
- 快取工廠之Redis快取快取Redis