1. 引入redis相关依赖
注: springboot默认会引入redis的lettuce客户端
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2.编写配置文件
spring:
redis:
port: 6379
host: 192.168.234.129
3.注入RedisTemplate
@Autowired
private RedisTemplate redisTemplate;
3.Java代码编写
1. 保存读取String
@Test
void test(){
redisTemplate.opsForValue().set("测试1","测试1");
String value = (String) redisTemplate.opsForValue().get("测试1");
redisTemplate.opsForValue().set("测试5秒过期","测试5秒过期");
redisTemplate.expire("测试5秒过期",5, TimeUnit.SECONDS);
String value2 = (String) valueOperations.get("测试5秒过期");
System.out.println("value:"+value);
System.out.println("value2:"+value2);
Thread.sleep(5000);
String value2 = (String)valueOperations.get("测试5秒过期");
System.out.println("value2:"+value2);
}
@Test
void test() throws JsonProcessingException {
User user = new User();
user.setName("张三");
user.setSex("男");
ObjectMapper mapper = new ObjectMapper();
String userJson = mapper.writeValueAsString(user);
redisTemplate.opsForValue().set("user",userJson);
System.out.println(redisTemplate.opsForValue().get("user"));
}
2. Hash结构,保存和读取map
@Test
void test(){
Map<String,String> map = new HashMap<>();
map.put("key1","value1");
map.put("key2","value2");
map.put("key3","value3");
map.put("key4","value4");
map.put("key5","value5");
redisTemplate.opsForHash().putAll("map1",map);
Map<String,String> resultMap = redisTemplate.opsForHash().entries("map1");
List<String> resultMapList = redisTemplate.opsForHash().values("map1");
Set<String> resultMapSet = redisTemplate.opsForHash().keys("map1");
String value = (String) redisTemplate.opsForHash().get("map1","key1");
System.out.println("resultMap:"+resultMap);
System.out.println("resultMapList:"+resultMapList);
System.out.println("resultMapSet:"+resultMapSet);
System.out.println("value:"+value);
}
3. 保存和读取Set
@Test
void test(){
SetOperations<String,String> set = redisTemplate.opsForSet();
set.add("set1","22");
set.add("set1","33");
set.add("set1","44");
Set<String> resultSet = redisTemplate.opsForSet().members("set1");
System.out.println("resultSet:"+resultSet);
}
4. 保存和读取list
@Test
void test(){
List<String> list1 = new ArrayList<>();
list1.add("a1");
list1.add("a2");
list1.add("a3");
List<String> list2 = new ArrayList<>();
list2.add("b1");
list2.add("b2");
list2.add("b3");
redisTemplate.opsForList().leftPush("listKey1",list1);
redisTemplate.opsForList().rightPush("listKey2",list2);
List<String> resultList1 = (List<String>) redisTemplate.opsForList().leftPop("listKey1");
List<String> resultList2 = (List<String>) redisTemplate.opsForList().rightPop("listKey2");
System.out.println("resultList1:"+resultList1);
System.out.println("resultList2:"+resultList2);
}
4.修改RedisTemplate的默认序列化(可选)
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
@Configuration
public class MyRedisTemplate {
@Bean
public RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory redisConnectionFactory){
RedisTemplate<String,Object> template = new RedisTemplate<>();
template.setConnectionFactory(redisConnectionFactory);
StringRedisSerializer keySerializer = new StringRedisSerializer();
template.setKeySerializer(keySerializer);
template.setHashKeySerializer(keySerializer);
Jackson2JsonRedisSerializer valueSerialier = new Jackson2JsonRedisSerializer(Object.class);
template.setValueSerializer(valueSerialier);
template.setHashValueSerializer(valueSerialier);
template.afterPropertiesSet();
return template;
}
}