redis使用之前的配置

redisTemplate的配置

1、自定义redisTemplate的配置信息,主要是序列化相关的配置

@Bean
public RedisTemplate<String, Object> redisTemplateGroup(LettuceConnectionFactory factory) {
	// 配置redisTemplate
	RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>();
	redisTemplate.setConnectionFactory(factory);
	RedisSerializer keySerializer = new StringRedisSerializer();
	//RedisSerializer valueSerializer = new GenericFastJsonRedisSerializer();//如果项目集成由fastjson,也可以集成这个序列化
	RedisSerializer valueSerializer = new GenericJackson2JsonRedisSerializer();//默认是jdk的序列化方式
	redisTemplate.setKeySerializer(keySerializer);
	redisTemplate.setValueSerializer(valueSerializer);
	redisTemplate.setHashKeySerializer(keySerializer);
	redisTemplate.setHashValueSerializer(valueSerializer);
	redisTemplate.afterPropertiesSet();
	return redisTemplate;
}

2、RedisCacheManager 缓存配置管理器

 @Bean
    public RedisCacheManager cacheManager(LettuceConnectionFactory factory) {
        // 配置序列化
        //自定义序列化配置
        RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration
                .defaultCacheConfig()
                //默认永久,指定一周,尽量不要让redis缓存永久
                .entryTtl(Duration.ofDays(7))
                .prefixCacheNameWith("myCache::")
                //如果是空值,不缓存,高并发防止缓存击穿可以去掉此项配置
                .disableCachingNullValues()
                .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer()))
                //默认使用jdk序列化
                .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericFastJsonRedisSerializer()));
        RedisCacheManager cacheManager = RedisCacheManager.builder(factory)
                .cacheDefaults(redisCacheConfiguration)
                .build();
        return cacheManager;
    }

详细注解用法,请参考:Cache缓存注解
备注:spring-cache存在的不足及补足方法
1)、读模式:

  • 缓存穿透.查询一个空数据

    解决:缓存空数据,默认RedisCacheConfiguration缓存空数据

  • 缓存击穿:大量并发进来同时查询一一个正好过期的数据

    解决:加锁;默认是无加锁的;sync=true【@Cacheable(value = “ccc”,sync = true)】

  • 缓存雪崩:大量的key同时过期

    解决:不设置过期时间

2)、写模式:(缓存与数据库一致)
读写加锁。
引入Canal,感知到mysql的更新去更新数据库
读多写多,直接去数据库查询就行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值