下面就按照步骤来配置一个Spring Boot整合Redis的实现。
这个问题在使用Redis是个人认为是比较重要的一点,也是开发中比较容易忽略的一点
首先需要创建对应的Bean对象
public class User {
private String name;
private int age;
private Date time;
public User(String name, int age, Date time) {
this.name = name;
this.age = age;
this.time = time;
}
public User() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Date getTime() {
return time;
}
public void setTime(Date time) {
this.time = time;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
", time=" + time +
'}';
}
}
用于进行对于Readis的直接访问,类似于MVC模式中的DAO层
@Repository
public class UserRedis {
@Autowired
private RedisTemplate<Object,User> redisTemplate;
public void add(String key,User user){
redisTemplate.opsForValue().set(key,user);
}
public User get(String key){
return redisTemplate.opsForValue().get(key);
}
}
这里需要注意的一个注解就是@Repository注解,这个是表示数据库访问测的注解
由于在进行插入数据,或者查询数据的时候,如果使用默认的配置,会出现在Readis中存储乱码的情况。所以在使用Redis的时候要根据具体的情况,使用自定义配置的方式进行配置,实现获取数据的正常显示。
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate<Object, User> redisTemplate(
RedisConnectionFactory redisConnectionFactory) {
//自定义实现对于RedisTemplate的配置
RedisTemplate<Object, User> template = new RedisTemplate<>();
template.setConnectionFactory(redisConnectionFactory);
//设置一JSON格式存储或者获取对象
Jackson2JsonRedisSerializer<User> ser = new Jackson2JsonRedisSerializer<>(User.class);
//为templeate设置默认的序列化方式
template.setDefaultSerializer(ser);
return template;
}
}
这里需要说明的一点,往Redis中存储对象的时候要对对象进行序列化。这样才能将一个对象的数据结构存储到Redis的数据结构中。
使用Redis最主要的一个步骤就是进行Redis的配置。这里指定了服务器的地址和Redis的默认端口6379端口,同时配置了Redis的jedis池的参数。
spring.redis.host=192.168.70.134
spring.redis.port=6379
spring.redis.jedis.pool.max-idle=8
spring.redis.jedis.pool.min-idle=0
spring.redis.jedis.pool.max-avtive=8
spring.redis.jedis.pool.max-wait=0ms
编写一个测试类来测试编写的代码的准确性,根据内容插入对象,然后获取对象。
@RunWith(SpringRunner.class)
@SpringBootTest
public class UserRedisTest {
@Autowired
UserRedis userRedis;
@Test
public void setup(){
User user = new User();
user.setName("nihui");
user.setAge(24);
user.setTime(new Date());
userRedis.add(this.getClass().getName(),user);
System.out.println(userRedis.get(this.getClass().getName()));
}
}