SpringBoot:整合Redis

默认使用的是ConcurrentMapCacheManager==ConcurrentMapCache;将数据保存在    ConcurrentMap<Object, Object>中
 * 开发中使用缓存中间件;redis、memcached、ehcache;
 * 三、整合redis作为缓存
 * Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。
 *     1、安装redis:使用docker;
 *     2、引入redis的starter
 *     3、配置redis:spring: redis: host:IP地址
 *     4、测试缓存
 *         原理:CacheManager===Cache 缓存组件来实际给缓存中存取数据
 *        1)、引入redis的starter,容器中保存的是 RedisCacheManager;
 *        2)、RedisCacheManager 帮我们创建 RedisCache 来作为缓存组件;RedisCache通过操作redis缓存数据的
 *        3)、默认保存数据 k-v 都是Object;利用序列化保存;如何保存为json
 *               1、引入了redis的starter,cacheManager变为 RedisCacheManager;
 *               2、默认创建的 RedisCacheManager 操作redis的时候使用的是 RedisTemplate<Object, Object>
 *               3、RedisTemplate<Object, Object> 是 默认使用jdk的序列化机制
 *      4)、自定义CacheManager;
 *

@Primary//指定一个默认的,不然会报错


@Configuration
public class MyRedisConfig {

    @Bean
    public RedisTemplate<Object, Employee> empRedisTemplate(RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
        RedisTemplate<Object, Employee> template = new RedisTemplate();
        template.setConnectionFactory(redisConnectionFactory);
        template.setDefaultSerializer(new Jackson2JsonRedisSerializer(Employee.class));
        return template;
    }

    @Primary//指定一个默认的,不然会报错
    @Bean
    public RedisCacheManager empCacheManager(RedisConnectionFactory redisConnectionFactory,
                                          ResourceLoader resourceLoader) {
        RedisCacheManager.RedisCacheManagerBuilder builder = RedisCacheManager
                .builder(redisConnectionFactory);

//                .cacheDefaults(determineConfiguration(resourceLoader.getClassLoader()));
        builder.cacheDefaults(org.springframework.data.redis.cache.RedisCacheConfiguration
                .defaultCacheConfig().serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new Jackson2JsonRedisSerializer<Employee>(Employee.class))));
        return builder.build();
    }

    @Bean
    public RedisCacheManager DeptCacheManager(RedisConnectionFactory redisConnectionFactory,
                                          ResourceLoader resourceLoader) {
        RedisCacheManager.RedisCacheManagerBuilder builder = RedisCacheManager
                .builder(redisConnectionFactory);

//                .cacheDefaults(determineConfiguration(resourceLoader.getClassLoader()));
        builder.cacheDefaults(org.springframework.data.redis.cache.RedisCacheConfiguration
                .defaultCacheConfig().serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new Jackson2JsonRedisSerializer<Department>(Department.class))));
        return builder.build();
    }

 

注入自己的cacheManger后,可以在需要用的地方使用缓存配置的指定处理器:比如以下就是,如果指定是默认的可以不加

这种事用注解的形式,也可以用代码的形式用缓存

 

代码形式:

将指定的缓存处理器注入进来,然后在代码中获取缓存cache,然后对缓存进行增删改查操作就可以

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值