SpringBoot 整合 Redis

HuDu發表於2020-09-18
SpringBoot運算元據:spring-data jpa jdbc mongodb redis !

SpringData也是和SpringBoot齊名的專案!

說明:在SpringBoot2.X之後,原來使用的jedis被替換成了lettuce

jedis:採用的直連,多個執行緒操作的話,是不安全的,如果想要避免不安全的,使用jedis pool連線池!更像BIO模式

lettuce:採用netty,例項可以在多個執行緒中進行共享,不存線上程不安全的情況!可以減少執行緒資料了,更像NIO模式

整合測試

原始碼分析:

@Bean
@ConditionalOnMissingBean(name = "redisTemplate")//我們可以自定義一個redisTemplate來替換這個預設的!
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory)throws UnknownHostException {
    //預設的RedisTemplate 沒有過多的設定,redis物件都是需要序列化的!
    //兩個泛型都是Object型別,Object的型別,我們使用需要強制轉換<String,Object>
    RedisTemplate<Object, Object> template = new RedisTemplate<>();
    template.setConnectionFactory(redisConnectionFactory);
    return template;
}

@Bean
@ConditionalOnMissingBean//由於String 是redis中最常用的型別,所以單獨出來一個bean!
public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisConnectionFactory)throws UnknownHostException {
    StringRedisTemplate template = new StringRedisTemplate();
    template.setConnectionFactory(redisConnectionFactory);
    return template;
}

整合測試

1、匯入依賴

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

2、配置連線

# 配置redis
spring.redis.host=127.0.0.1
spring.redis.port=6379

3、測試

@SpringBootTest
class SpringbootRedisApplicationTests {

  @Autowired
  private RedisTemplate<String,String> redisTemplate;

  @Test
  void contextLoads() {
  //redisTemplate 操作不同的資料型別
  //opsForValue   //操作字串 類似String
 //opsForList    //操作List 類似List
 //opsForSet //opsForHash //opsForZSet //opsForGeo
 //除了基本的操作,我們常用的方法都可以直接通過redisTemplate操作,比如事務,和基本的CRUD
  redisTemplate.opsForValue().set("myKey","myValue");
  System.out.println(redisTemplate.opsForValue().get("myKey"));
  }

}

SpringBoot 整合 Redis

SpringBoot 整合 Redis

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章