springboot使用redis

一、安装redis

在centos机器上安装redis

参考:https://www.jianshu.com/p/aec247ffbe51

二、搭建springboot+redis项目

1.添加依赖:

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
            <version>2.0.0.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.4</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.9.4</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.9.4</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.datatype/jackson-datatype-jsr310 -->
        <dependency>
            <groupId>com.fasterxml.jackson.datatype</groupId>
            <artifactId>jackson-datatype-jsr310</artifactId>
            <version>2.9.4</version>
        </dependency>

2.自定义redisTemplate

/**
 * Author: hezishan
 * Date: 2018/5/11.
 * Description: redis配置类
 **/
@Configuration
public class RedisConfig {

    /**
     * redisTemplate 序列化使用的jdkSerializeable, 存储二进制字节码, 所以自定义序列化类
     * @param redisConnectionFactory
     * @return
     */
    @Bean
    public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
            RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();
            redisTemplate.setConnectionFactory(redisConnectionFactory);

            // 使用Jackson2JsonRedisSerialize 替换默认序列化
            Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
            ObjectMapper objectMapper = new ObjectMapper();
            objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
            objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
            jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
            // 设置value的序列化规则和 key的序列化规则
            redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
            redisTemplate.setKeySerializer(new StringRedisSerializer());

            redisTemplate.setHashKeySerializer(jackson2JsonRedisSerializer);
            redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);

            redisTemplate.setDefaultSerializer(jackson2JsonRedisSerializer);
            redisTemplate.setEnableDefaultSerializer(true);
            redisTemplate.afterPropertiesSet();
            return redisTemplate;
    }

}

3.编写测试类,在这里set的时候是把user.tostring()内容写入,之前看其博客写 user,会出现错误:Could not read JSON: Cannot construct instance of `com.tnaot.newsrecommend.User` (no Creators, like default construct, exist),通过redis-cli get key 发现其放进去的类并不是json格式,所以转的时候肯定出错

@RunWith(SpringRunner.class)
@SpringBootTest
public class NewsrecommendApplicationTests {

	@Autowired
	private RedisTemplate<Object, Object> template;

	@Test
	public void contextLoads() {
        User user = new User(1,"象拔蚌");
        template.opsForValue().set(user.getId()+"",user.toString());
        //原本opsForValue()是只能操作字符串的.现在就可以操作对象了
        String result =(String) template.opsForValue().get(user.getId()+"");
        System.out.println(result.toString());
	}
}

4.实体类,注意需要重新实体类的tostring方法,改为json格式

/**
 * Author: hezishan
 * Date: 2018/5/11.
 * Description:
 **/
public class User implements Serializable {

    int id;

    String name;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public User(int id, String name) {
        this.id = id;
        this.name = name;
    }

    @Override
    public String toString() {
        return "User:{" +
                "id:" + id +
                ", name:'" + name + '\'' +
                '}';
    }
}


猜你喜欢

转载自blog.csdn.net/hzs33/article/details/80285200
今日推荐