springBoot整合spring-data-redis
- 2019 年 12 月 30 日
- 筆記
文章目錄
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); }} |
---|