­

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); }}