• springboot_redis


    1.引入redis的启动器

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>

    2.指定redis的主机地址

    3.自动注入模板

        @Autowired
        StringRedisTemplate stringRedisTemplate;   //k v都是字符串的
    
        @Autowired
        RedisTemplate<Object, Object> redisTemplate;   //k v都是对象的

     redsiAutoConfiguration:

    //
    // Source code recreated from a .class file by IntelliJ IDEA
    // (powered by Fernflower decompiler)
    //
    
    package org.springframework.boot.autoconfigure.data.redis;
    
    import java.net.UnknownHostException;
    import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
    import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
    import org.springframework.boot.context.properties.EnableConfigurationProperties;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.Import;
    import org.springframework.data.redis.connection.RedisConnectionFactory;
    import org.springframework.data.redis.core.RedisOperations;
    import org.springframework.data.redis.core.RedisTemplate;
    import org.springframework.data.redis.core.StringRedisTemplate;
    
    @Configuration
    @ConditionalOnClass({RedisOperations.class})
    @EnableConfigurationProperties({RedisProperties.class})
    @Import({LettuceConnectionConfiguration.class, JedisConnectionConfiguration.class})
    public class RedisAutoConfiguration {
        public RedisAutoConfiguration() {
        }
    
        @Bean
        @ConditionalOnMissingBean(
            name = {"redisTemplate"}
        )
        public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
            RedisTemplate<Object, Object> template = new RedisTemplate();
            template.setConnectionFactory(redisConnectionFactory);
            return template;
        }
    
        @Bean
        @ConditionalOnMissingBean
        public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
            StringRedisTemplate template = new StringRedisTemplate();
            template.setConnectionFactory(redisConnectionFactory);
            return template;
        }
    }
    View Code

     @Test
        public void test01(){
            stringRedisTemplate.opsForValue().append("k2","_append_k2");
        }


     测试保存对象:

    @Test
        public void test02(){
            User user = new User();
            user.setId(36);
            user.setAddress("上海市黄浦区赵家桥285号");
            user.setAge(21);
            user.setSex(1);
            user.setName("包青天");
            redisTemplate.opsForValue().set("usr1",user);//默认以java序列化的形式保存
        }

     


     添加配置,使其能以json的数据形式存入redis中:

    package ustc.anmin.springboot.service;
    
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.data.redis.connection.RedisConnectionFactory;
    import org.springframework.data.redis.core.RedisTemplate;
    import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
    import ustc.anmin.springboot.bean.User;
    
    import java.net.UnknownHostException;
    
    @Configuration
    public class MyRedisConfig {
    
        @Bean
        public RedisTemplate<Object, User> userRedisTemplate(RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
            RedisTemplate<Object, User> template = new RedisTemplate();
            //关键
            template.setDefaultSerializer(new Jackson2JsonRedisSerializer<User>(User.class));
            template.setConnectionFactory(redisConnectionFactory);
            return template;
        }
    }

     


     将redis设为缓存中间件:

    1.在pom.xml中引入redis的starter

    2.将数据格式转为json形式  要修改redisManager

        @Bean
        public CacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {
            //初始化一个RedisCacheWriter
            RedisCacheWriter redisCacheWriter = RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory);
            //设置CacheManager的值序列化方式为json序列化
            RedisSerializer<Object> jsonSerializer = new GenericJackson2JsonRedisSerializer();
            RedisSerializationContext.SerializationPair<Object> pair = RedisSerializationContext.SerializationPair
                    .fromSerializer(jsonSerializer);
            RedisCacheConfiguration defaultCacheConfig=RedisCacheConfiguration.defaultCacheConfig()
                    .serializeValuesWith(pair);
            //设置默认超过期时间是30秒
            defaultCacheConfig.entryTtl(Duration.ofSeconds(30));
            //初始化RedisCacheManager
            return new RedisCacheManager(redisCacheWriter, defaultCacheConfig);
        }

    其余设置与spring-boot启动缓存的方式一样。

  • 相关阅读:
    二元树的深度 【微软面试100题 第五十二题】
    和为n连续正数序列 【微软面试100题 第五十一题】
    一道看上去很吓人的算法题 【微软面试去100题 第四十九题】
    在左移的递减数组中查找某数 【微软面试100题 第四十八题】
    最长递减子序列 【微软面试100题 第四十七题】
    括号问题 【微软面试100题 第四十六题】
    矩阵运算 【微软面试100题 第四十五题】
    设计一个魔方(六面)的程序 【微软面试100题 第四十四题】
    二叉搜索树的非递归前中后序遍历 【微软面试100题 第四十三题】
    合并链表 【微软面试100题 第四十二题】
  • 原文地址:https://www.cnblogs.com/ustc-anmin/p/11093688.html
Copyright © 2020-2023  润新知