springBoot整合spring-data-redis

  • 2019 年 12 月 30 日
  • 笔记

文章目录

  1. 1. SpringBoot整合Spring data redis
    1. 1.1. 依赖
    2. 1.2. 连接配置
    3. 1.3. 序列化方式的配置
    4. 1.4. StringRedisTemplate
    5. 1.5. RedisTemplate

SpringBoot整合Spring data redis

依赖

1234

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

连接配置

1234

spring: redis: host: ****** ## redis的主机地址 port: 6379

序列化方式的配置

  • 默认采用的是jdk的序列化
  • 我们可以改变成json序列化方式,如下:

123456789101112131415161718192021222324252627282930313233343536373839404142

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.GenericJackson2JsonRedisSerializer;import org.springframework.data.redis.serializer.StringRedisSerializer;/** * Redis的配置类 * @author Administrator * */@Configurationpublic class RedisConfig { /** * 重写Redis序列化方式,使用Json方式: * 当我们的数据存储到Redis的时候,我们的键(key)和值(value)都是通过Spring提供的Serializer序列化到数据库的。RedisTemplate默认使用的是JdkSerializationRedisSerializer,StringRedisTemplate默认使用的是StringRedisSerializer。 * Spring Data JPA为我们提供了下面的Serializer: * GenericToStringSerializer、Jackson2JsonRedisSerializer、JacksonJsonRedisSerializer、JdkSerializationRedisSerializer、OxmSerializer、StringRedisSerializer。 * 在此我们将自己配置RedisTemplate并定义Serializer。 * @param redisConnectionFactory * @return */ @Bean public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) { RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>(); redisTemplate.setConnectionFactory(redisConnectionFactory);// JdkSerializationRedisSerializer jdkSerializationRedisSerializer = new JdkSerializationRedisSerializer(); GenericJackson2JsonRedisSerializer jackson2JsonRedisSerializer = new GenericJackson2JsonRedisSerializer(); // 设置值(value)的序列化采用FastJsonRedisSerializer。 redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);// redisTemplate.setHashValueSerializer(fastJsonRedisSerializer); // 设置键(key)的序列化采用StringRedisSerializer。 redisTemplate.setKeySerializer(new StringRedisSerializer()); redisTemplate.setHashKeySerializer(new StringRedisSerializer()); redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer); redisTemplate.afterPropertiesSet(); return redisTemplate; } }

StringRedisTemplate

  • 这个只能存放字符串,如果需要存放对象,那么需要将其转换成json存储即可

RedisTemplate

  • 配置好序列化方式之后,即可注入,如下:

1234567891011121314151617181920

@RunWith(SpringRunner.class)@SpringBootTest //springBoot测试类,可以自定义测试类,不过需要引用这两个注解public class BlueApplicationTests { @Resource private RedisTemplate<String, Object> redisTemplate; @Test public void test2(){ Person person=new Person(); person.setAge(22); person.setName("陈加兵"); redisTemplate.opsForHash().put("p", "3", person); } @Test public void test3(){ Person person= (Person) redisTemplate.opsForHash().get("p", "3"); System.out.println(person); }}