Springboot整合Redis

95 阅读1分钟

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;
    }
}