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