在Springboot一般使用RedisTemplate提供的方法来操作Redis.
先介绍一下Springboot整合Redis的步骤
1.添加启动器
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
2.在application.properties或者application.yml配置连接信息
Redis 配置 redis: ## Redis数据库索引(默认为0) database: 0 ## Redis服务器地址 host: 192.168.126.129 ## Redis服务器连接端口 port: 6379 ## Redis服务器连接密码(默认为空) password: jedis: pool: ## 连接池最大连接数(使用负值表示没有限制) #spring.redis.pool.max-active=8 max-active: 8 ## 连接池最大阻塞等待时间(使用负值表示没有限制) #spring.redis.pool.max-wait=-1 max-wait: -1 ## 连接池中的最大空闲连接 #spring.redis.pool.max-idle=8 max-idle: 8 ## 连接池中的最小空闲连接 #spring.redis.pool.min-idle=0 min-idle: 0 ## 连接超时时间(毫秒) timeout: 1200
3.测试
@RunWith(SpringRunner.class) @SpringBootTest public class Test_1{ @Autowired private RedisTemplate<String,String>redisTemplate; @Test public void set(){ redisTemplate.opsForValue().set("myKey","myValue"); System.out.println(redisTemplate.opsForValue().get("myKey")); } }
4.查看结果
image.png
5.序列化器
这里先说一下Spring提供了那些序列化器(
Jackson2JsonRedisSerializer JdkSerializationRedisSerializer OxmSerializer StringRedisSerializer GenericToStringRedisSerializer GenericJackson2JsonRedisSerializer
springboot默认采用jdk序列化器
但是有时候我们需要以json类型传入
这个时候需要我们在配置类中配置json序列化器
具体步骤如下:
1.实体类代码
@Data public class Days implements Serializable { private String openId; private String daysId; //每天的标题 private String title; //代办事项的数量 private int itemNumber; //日程 private String date; }
2.在配置类中设置序列化器
@Configuration public class RedisConfig{ @Bean public RedisTemplate<String, Days>redisTemplate(RedisConnectionFactory factory){ RedisTemplate<String,Days>template=new RedisTemplate<>(); //关联 template.setConnectionFactory(factory); //设置key的序列化器 template.setKeySerializer(new StringRedisSerializer()); //设置value的序列化器 template.setValueSerializer(new Jackson2JsonRedisSerializer<>(Days.class)); return template; } }
3测试类
@RunWith(SpringRunner.class) @SpringBootTest public class RedisTest { @Autowired private RedisTemplate<String,Days> redisTemplate; private Days d; @Before public void before(){ d=new Days(); d.setDate("123"); d.setDaysId("456"); d.setItemNumber(123); d.setOpenId("dawda"); d.setTitle("title"); } @Test public void testSet(){ this.redisTemplate.opsForValue().set("days",d); System.out.println((redisTemplate.opsForValue().get("days"))); } }
4查看运行结果
image.png