zoukankan      html  css  js  c++  java
  • 使用 Spring data redis 结合 Spring cache 缓存数据配置

    使用 JavaConfig 方式配置

    依赖 jar 包: jedis、spring-data-redis 

    首先需要进行 Redis 相关配置

    @Configuration
    public class RedisConfig {
        
        @Bean
        public JedisPoolConfig poolConfig() {
            JedisPoolConfig poolConfig = new JedisPoolConfig();
            poolConfig.setMaxTotal(10);
            poolConfig.setMaxIdle(1);
            return poolConfig;
        }
        
        @Bean
        public RedisConnectionFactory redisConnectionFactory(JedisPoolConfig poolConfig) {
            JedisConnectionFactory cf = new JedisConnectionFactory();
            cf.setHostName("localhost");
            cf.setPort(6379);
    //      cf.setPassword("XXX");
            cf.setPoolConfig(poolConfig);
            return cf;
        }
        
        @Bean
        public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) {
            RedisTemplate redisTemplate = new RedisTemplate();
            redisTemplate.setConnectionFactory(redisConnectionFactory);
          
            // 如果 key 确定使用 String 类型,可以使用这个序列化类,方便查看
            // redisTemplate.setKeySerializer(new StringRedisSerializer());
            // value 的序列化默认使用 JdkSerializationRedisSerializer
            
            redisTemplate.afterPropertiesSet();
            return redisTemplate;
        }
    }

    之后需要进行 Spring Cache 的配置

    @Configuration
    // 启用缓存
    @EnableCaching
    // 引用 Redis 的配置
    @Import({RedisConfig.class})
    public class CacheConfig {
        @Bean
        public CacheManager cacheManager(RedisTemplate redisTemplate) {
            RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate);
            // 设置默认过期时间(秒)
            cacheManager.setDefaultExpiration(60);
         // 如果需要单独设置key的过期时间,可以使用 cacheManager.setExpires((Map<String, Long> expires)
    return cacheManager; } }

    注意:

    1、要进行缓存的类必须实现 Serializable 接口

    2、因为实现方式为使用代理,所以类内部调用不会触发缓存

     

  • 相关阅读:
    dubbo支持哪些通信协议?支持哪些序列化协议?
    spring常见面试题
    100道Java基础面试题收集整理(附答案)
    阿里面试题
    说一下的dubbo的工作原理?注册中心挂了可以继续通信吗?说说一次rpc请求的流程?
    为什么要进行系统拆分?如何进行系统拆分?拆分后不用 dubbo 可以吗?
    layui增加转圈效果
    js防止重复提交代码
    工作流表介绍
    权限树的制作(menu)
  • 原文地址:https://www.cnblogs.com/zawier/p/7354849.html
Copyright © 2011-2022 走看看