Springboot项目中使用Redis
目录
一、在Springboot项目中使用Redis
1.简单使用
- 引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
- 编写配置文件
spring:
redis:
host: 172.16.253.2
port: 6379
jedis:
pool:
max-active: 10
max-idle: 8
max-wait: 1000
- 使用RedisTemplate模版对象操作redis
@Autowired
private RedisTemplate<String,String> redisTemplate;
//存储对象
@Test
void testRedis(){
ValueOperations<String, String> ops = redisTemplate.opsForValue();
ops.set("xiaoming","xiaoming");
}
@Test
void testRedis1(){
String value = redisTemplate.opsForValue().get("xiaoming");
System.out.println(value);
}
2.RedisTemplate模版对象
RestTemplate、TestRestTemplate、RabbitTemplate这一些列都是使用了模版设计模式。
RedisTemplate提供了一套操作Redis的基本模版,使用模版来更加方便的操作redis。
1)序列化器
RedisTemplate在存储数据的时候,会对键和值进行序列化。
- String序列化器:会把数据用字符串来存储。但是不能存储java对象
- jdk序列化器:默认的序列化器,做一次序列化,把java对象转换成二进制,反序列化时把二进制转换成java对象。
在使用时会进行一次整合:
@Test
public void testSializer(){
//把键序列化器设置成String的序列化器
redisTemplate.setKeySerializer(new StringRedisSerializer());
// redisTemplate.setValueSerializer(new StringRedisSerializer());
// // 会把值-》json
// redisTemplate.setKeySerializer(new JdkSerializationRedisSerializer());
//把值的序列化器设置成Jdk的序列化器。
redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer());
User user = new User();
user.setId(1002L);
user.setName("xiaozhao");
user.setAge(33);
redisTemplate.opsForValue().set("xiaozhao",user);
}
2)在springboot中配置RedisTemplate<String,Object>
Springboot整合redis后默认会提供一个RedisTemplate<String,String>,需要手动配置RedisTemplate<String,Object>
在配置类中实现:
@Configuration
@EnableAutoConfiguration
public class RedisConfig {
@Bean
public RedisTemplate<String,Object> getRedisTemplate(RedisConnectionFactory factory){
RedisTemplate<String,Object> redisTemplate = new RedisTemplate<>();
//设置redisTemplate连接工厂
redisTemplate.setConnectionFactory(factory);
//设置redis的键的序列化器
redisTemplate.setKeySerializer(new StringRedisSerializer());
return redisTemplate;
}
}
3.RedisTemplate中对其他数据类型的操作
//对String类型进行操作
redisTemplate.opsForValue();
//对hash进行操作
HashOperations hashOps = redisTemplate.opsForHash();
//对list进行操作
ListOperations listOps = redisTemplate.opsForList();
//对set进行操作
SetOperations setOps = redisTemplate.opsForSet();
//对zSet进行操作
ZSetOperations zSetOps = redisTemplate.opsForZSet();