zoukankan      html  css  js  c++  java
  • 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启动缓存的方式一样。

  • 相关阅读:
    top 500 name
    dede 5.7 爆后台
    Mac中GDB安装
    php strcmp bypass漏洞
    文件时间伪造
    C#读取计算机插入USB历史记录
    MySQL远程连接时出现10061以及1045错误时的解决方法
    MDN 开发者分享平台
    thinkphp 3.2 完全开发手册地址
    PHP 解析JSON数组
  • 原文地址:https://www.cnblogs.com/ustc-anmin/p/11093688.html
Copyright © 2011-2022 走看看