暑假的时候抽时间看了看redis,感觉还不算太难,也可能是我没深究。今天学了springboot整合redis,记录一下。
首先引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
然后配置文件配置一下redis,还可以配置password,我的没密码,就这些够了。
spring:
redis:
#redis连接信息
host: 127.0.0.1
port: 6379
#还可以配置password,我的没密码,就这些够了
因为引入了spring-boot-starter-data-redis这个依赖,就可以使用RedisTemplate了。RedisTempla是一个spring-redis模块下的操作redis的工具类。直接上方法
@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringbootRedisApplicationTests {
@Autowired
private RedisTemplate<Object, Object> redisTemplate;
@Test
public void contextLoads() {
User user = new User(1, "admin", "123456");
redisTemplate.opsForValue().set("user1", user);
}
}
上面就是保存了一个键值对,键"user1",值user对象。
然后运行,这里会报一个错
大致意思就是我的user类需要序列化,所以实现一下Serializable就ok
public class User implements Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
private String username;
private String password;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public User() {
}
public User(Integer id, String username, String password) {
this.id = id;
this.username = username;
this.password = password;
}
public String toString() {
return "User [id=" + id + ", username=" + username + ", password=" + password + "]";
}
}
然后再运行就没什么问题了。再看看redis,数据进来了,但都是些不太看得懂的东西。这是因为保存对象的话默认用的是jdk序列化机制。
这里试着用json的方式保存数据,就是将对象转为json。。。
首先依赖
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
然后写个配置类,用来将对象转为json
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate<Object, User> userRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<Object, User> template = new RedisTemplate<Object, User>();
template.setConnectionFactory(redisConnectionFactory);
Jackson2JsonRedisSerializer<User> ser = new Jackson2JsonRedisSerializer<User>(User.class);
template.setDefaultSerializer(ser);
return template;
}
}
@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringbootRedisApplicationTests {
@Autowired
private RedisTemplate<Object, User> userRedisTemplate;
@Test
public void contextLoads() {
User user = new User(1, "admin", "123456");
userRedisTemplate.opsForValue().set("user1", user);
}
}
测试类中引入了我们配置的UserRedisTemplate,然后运行。查看redis如下,说明成功啦哈哈哈哈哈哈哈哈哈哈哈