springboot整合redis

spring boot整合redis,通过jedis,可以使用RedisTemplate模板进行数据处理

0.启动redis
1)启动redis服务
在这里插入图片描述
2)在另一个命令行界面连接redis
在这里插入图片描述
1.添加pom依赖

org.springframework.boot
spring-boot-starter-data-redis
1.5.21.RELEASE

2.yml文件的配置
spring:
redis:
host: 127.0.0.1
port: 6379
timeout: 1000
database: 0
pool:
max-active: 10
max-idle: 8
min-idle: 2
max-wait: 100

3.添加了redis依赖,springboot就包含了RedisTemplate模板,编写测试类验证redis的连接

@SpringBootTest
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
public class TestRedis {

	@Resource
	private RedisTemplate redisTemplate;
	
	@Test
	public void testSendMail() {
	
		this.redisTemplate.opsForValue().set("mldn", "java");
		System.out.println(this.redisTemplate.opsForValue().get("mldn"));
	}
}

以上是redis的基本使用,下面redis对象,如果要存储对象,需要对对象进行序列化操作

1.新建一个redis序列化工具类

//此时定义的序列化操作表示可以序列化所有类的对象,当然,这个对象所在的类一定要实现序列化接口
public class RedisObjectSerializer implements RedisSerializer {

	//为了方便进行对象与字节数组的转换,所以应该首先准备出两个转换器
	private Converter serializingConverter = new SerializingConverter();
	private Converter deserializingConverter = new DeserializingConverter();
	private static final byte [] EMPTY_BYTE_ARRAY = new byte[0];
	@Override
	public byte[] serialize(Object obj) throws SerializationException {
		// TODO Auto-generated method stub
		if(obj==null) { //没有要序列化的对象出现,所以返回的字节数组应该就是一个空数组
			return EMPTY_BYTE_ARRAY;
		}
		return this.serializingConverter.convert(obj);
	}

	@Override
	public Object deserialize(byte[] data) throws SerializationException {
		// TODO Auto-generated method stub
		if(data == null || data.length == 0) { //此时没有对象信息
			return null;
		}
		return this.deserializingConverter.convert(data);
	}

}
 
  

2.此时RedisTemplate不能识别上面的工具类,此时需要新建一个redis配置类

@Configuration
public class RedisConfig {

	**@Bean**
	public RedisTemplate getRedisTemplate(RedisConnectionFactory factory){
		RedisTemplate redisTemplate = new RedisTemplate();
		redisTemplate.setConnectionFactory(factory);
		redisTemplate.setKeySerializer(new StringRedisSerializer());
		redisTemplate.setValueSerializer(new RedisObjectSerializer()); // RedisObjectSerializer 就是上面自定义的redis工具类
		return redisTemplate;
	}
}

3.编写VO数据类,实现序列化接口

@SuppressWarnings("serial")
public class Member implements Serializable{
	private String mid;
	private Integer age;
	public String getMid() {
		return mid;
	}
	public void setMid(String mid) {
		this.mid = mid;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	@Override
	public String toString() {
		return "Member [mid=" + mid + ", age=" + age + "]";
	}
	
}

4.编写测试类

@SpringBootTest
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
public class TestRedis {

	@Resource
	private RedisTemplate redisTemplate;
	

	@Test
	public void testGet() {
		System.out.println(this.redisTemplate.opsForValue().get("mldn"));

	}
	@Test
	public void testSet() {
	
		Member vo = new Member();
		vo.setMid("mldnjava");
		vo.setAge(19);
		this.redisTemplate.opsForValue().set("mldn", vo);
	}
}

你可能感兴趣的:(springboot整合redis)