• <noscript id="ecgc0"><kbd id="ecgc0"></kbd></noscript>
    <menu id="ecgc0"></menu>
  • <tt id="ecgc0"></tt>

    Spring Boot如何整合Redis

    Spring Boot是目前非常流行的Java Web開發框架,Redis是非關系型數據庫的一種,以鍵值對的形式存儲。Spring對Redis的支持是通過Spring Data Redis來實現的,給我們提供了RedisTemplate和StringRedisTemplate兩種模板來操作數據。Spring Boot框架也提供了對Redis的支持,下面我們來講一下Spring Boot框架整合Redis的步驟。

    操作方式

    • 01

      Spring Boot整合Redis我們需要添加依靠的jar包,spring-boot-starter-data-redis中包含spring和redis相關的jar包,jedis作為redis的客戶端也需要添加到工程中,Spring Boot的版本信息在父pom中已指心猿意馬,子模塊中的spring相關的jar包無需別的指心猿意馬。

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


      redis.clients
      jedis
      3.0.0-m1

    • 02

      Spring Boot會按照application.properties中的設置裝備擺設對Redis的屬性進行主動設置裝備擺設,并注入到RedisProperties類中。在application.properties設置裝備擺設文件中這些屬性都是以spring.redis為前綴的,值得注重的是在Spring Boot 1.5.x版本中默認的Redis客戶端是jedis,是以在設置裝備擺設文件中無需指心猿意馬,如下圖所示。

    • 03

      Spring Boot 1.5.x版本的整合設置裝備擺設網上可以搜刮年夜量的文章,然而Spring Boot 2.x版本的整合伙料卻很是少,甚至供給的設置裝備擺設不克不及正常利用,是以本文本家兒要講解Spring Boot 2.x整合Redis以及Redis的利用環境。spring-boot 2.x版本有jedis和lettuce兩種客戶端,是以我們必需要去指心猿意馬利用哪一種客戶端,兩個客戶端的設置裝備擺設如下圖所示,本文利用的是Jedis客戶端毗連池,具體的設置裝備擺設如下。
      # Redis數據庫索引(默認為0)
      spring.redis.database=0
      # Redis辦事器地址
      spring.redis.host=127.0.0.1

      # Redis辦事器毗連端口
      spring.redis.port=6379
      # Redis辦事器毗連暗碼(默認為空)
      spring.redis.password=xylx1.t!@#
      # 設置裝備擺設jedis毗連池
      # 毗連池最年夜毗連數(利用負值暗示沒有限制)
      spring.redis.jedis.pool.max-active=8
      # 毗連池最年夜梗阻期待時候(利用負值暗示沒有限制)
      spring.redis.jedis.pool.max-wait=-1ms
      # 毗連池中的最年夜余暇毗連
      spring.redis.jedis.pool.max-idle=8
      # 毗連池中的最小余暇毗連
      spring.redis.jedis.pool.min-idle=0
      # 毗連超不時間(毫秒)
      spring.redis.timeout=5000ms
      由設置裝備擺設我們可以看到spring-boot 2.x版本時候設置需要加單元ms,因為參數的類型為Duration。別的spring.redis.timeout盡量不要設置裝備擺設0,不然可能會呈現io.lettuce.core.RedisCommandTimeoutException: Command timed out超時錯誤。

    • 04

      設置裝備擺設文件編纂完當作后,我們起頭編寫代碼實現Redis數據的存儲和讀取。我們建立一個RedisUtil東西類,該類利用@Component注解暗示交由Spring辦理,StringRedisTemplate是Spring供給的,可以利用@Autowired注解直接注入,接下來便可以書寫存和取的代碼了。
      @Component
      public class RedisUtil {

      @Autowired
      private StringRedisTemplate redisTemplate;

      /**
      * 存字符串
      * @param key 緩存鍵
      * @param value 緩存值
      * @param expireTime 過時時候(s)
      */
      public void setString(String key, String value, int expireTime){
      ValueOperations ops = redisTemplate.opsForValue();
      if (expireTime != 0) {
      ops.set(key, value, expireTime, TimeUnit.SECONDS);
      } else {
      ops.set(key,value);
      }
      }

      /**
      * 取字符串
      * @param key 緩存鍵
      * @return 緩存值
      */
      public String getString(String key){
      ValueOperations ops = this.redisTemplate.opsForValue();
      return ops.get(key);
      }

    • 05

      接下來我們編寫Controller層代碼去挪用RedisUtil東西類,實現數據的存儲和讀取,代碼比力簡單可以參考下圖。若想驗證Redis是否可用,還需要編寫啟動類,如下圖所示。

    • 06

      由上圖可看到我們編寫了一個post請求用于存儲字符串,get請求用于掏出字符串。啟動類經由過程main方式啟動應用,接下來我們利用postman去模擬瀏覽器挪用post和get請求,由下圖可以看到Redis存儲的數據當作功被掏出。

    • 07

      接下來我們介紹Jedis,這是一個封裝了Redis的客戶端,在Spring Boot整合Redis的根本上,可以供給更簡單的API操作。是以我們需要設置裝備擺設JedisPool的Bean,代碼如下,此中@Configuration注解表白這是一個設置裝備擺設類,我們在該類中注入RedisProperties,而且利用@Bean注解指心猿意馬JedisPool。
      @Configuration
      public class RedisConfiguration {

      @Autowired
      private RedisProperties properties;

      @Bean
      public JedisPool getJedisPool(){
      JedisPoolConfig config = new JedisPoolConfig();
      config.setMaxIdle(properties.getJedis().getPool().getMaxIdle());
      config.setMaxTotal(properties.getJedis().getPool().getMaxActive());
      config.setMaxWaitMillis(properties.getJedis().getPool().getMaxWait().toMillis());
      JedisPool pool = new JedisPool(config,properties.getHost(),
      properties.getPort(),100,
      properties.getPassword(), properties.getDatabase());
      return pool;
      }
      }

    • 08

      接下來我們編纂JedisUtil東西類,經由過程SpringBoot容器的@Component注解來主動建立,而且注入JedisPool,利用jedisPool.getResource()方式來獲取Jedis,并最終實現操作redis數據庫,其代碼如下。
      @Component
      public class JedisUtil {

      @Autowired
      JedisPool jedisPool;

      //獲取key的value值
      public String get(String key) {
      Jedis jedis = jedisPool.getResource();
      String str = "";
      try {
      str = jedis.get(key);
      } finally {
      try {
      jedis.close();
      } catch (Exception e) {
      e.printStackTrace();
      }
      }
      return str;
      }

      public String set(String key, String value) {
      Jedis jedis = jedisPool.getResource();
      String str = "";
      try {
      str = jedis.set(key, value);
      } finally {
      try {
      jedis.close();
      } catch (Exception e) {
      e.printStackTrace();
      }
      }
      return str;
      }

      }

    • 09

      JedisUtil東西類編寫完當作后,我們點竄之前的RedisController,并注入JedisUtil,代碼如下圖所示。然后再用postman別離挪用post和get接口,我們可以看到當作功取到了新的key的value值。

    • End

    出格提醒

    在Spring Boot整合Redis前本機需安裝Redis,別的可以利用RedisDesktopManager這個Redis這個桌面辦理東西查看Redis中的數據。

    • 發表于 2018-11-27 00:00
    • 閱讀 ( 1046 )
    • 分類:電腦網絡

    0 條評論

    請先 登錄 后評論
    聯系我們:uytrv@hotmail.com 問答工具
  • <noscript id="ecgc0"><kbd id="ecgc0"></kbd></noscript>
    <menu id="ecgc0"></menu>
  • <tt id="ecgc0"></tt>
    久久久久精品国产麻豆