分布式锁结合SpringCache( 四 )
//可以读取Properties文件@EnableConfigurationProperties(CacheProperties.class)@EnableCaching@Configurationpublic class MyCacheConfig {@BeanRedisCacheConfiguration redisCacheConfiguration(CacheProperties cacheProperties) {RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig();//Key和Value JSON序列化方式config = config.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer()));config = config.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericFastJsonRedisSerializer()));//使用默认才会读出properties文件中的配置 , 自定义时roperties文件中的配置不生效CacheProperties.Redis redisProperties = cacheProperties.getRedis();if (redisProperties.getTimeToLive() != null) {config = config.entryTtl(redisProperties.getTimeToLive());}if (redisProperties.getKeyPrefix() != null) {config = config.prefixCacheNameWith(redisProperties.getKeyPrefix());}if (!redisProperties.isCacheNullValues()) {config = config.disableCachingNullValues();}if (!redisProperties.isUseKeyPrefix()) {config = config.disableKeyPrefix();}return config;}}4、SpringCache能解决的事以及不足:(1)读模式缓存击穿:查询一个不存在的数据 。 解决:缓存空数据( ache-null-values=true)
缓存雪崩:大量key刚好过期 。 解决:加随机时间和过期时间( spring.cache.redis.time-to-live=3600000)
缓存击穿:大量并发同时查询一个正好过期的数据 。 解决:加锁( @Cacheable(cacheNames = "category", key = "'level1Categorys'", sync = true) )
(2)写模式【分布式锁结合SpringCache】SpringCache并未做太多处理
总结:读多写少 , 即时性、、一致性要求不搞的数据使用SpringCache
推荐阅读
- Kensington发布StudioDock 将iPad Pro扩展坞与无线充电器相结合
- 为中国医疗健康产业护航,“医工结合”的机会和趋势在哪里?
- java 从零实现属于你的 redis 分布式锁
- 荣耀游戏本实测分享“性能与智能”完美结合
- 中医与人工智能结合,是必然趋势还是双刃剑?
- HarmonyOS 2.0手机开发者Beta版真来了!快来升级EMUI11提前感受分布式技术
- 四核强性能,华硕XD4灵耀AX魔方分布式路由评测
- 为升级鸿蒙做准备 EMU 11分布式技术提前预演
- 分布式天花板?阿里百万架构师的ZK+Dubbo笔记,颠覆认知
- 为什么分布式云是下一代云计算?Gartner分析师这样解释
