Spring Boot集成Redis實戰操做

最近在使用Spring Boot,發現其功能真是強大,能夠快速的集成不少的組件功能,很是方便:web

今天就來介紹下,如何集成Redis。redis

定義spring

Redis 是一個高性能的key-value數據庫。它支持存儲的value類型不少,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set –有序集合)和hash(哈希類型)。數據庫

如下是Redis的一些優勢。瀏覽器

異常快 - Redis很是快,每秒可執行大約110000次的設置(SET)操做,每秒大約可執行81000次的讀取/獲取(GET)操做。緩存

支持豐富的數據類型 - Redis支持開發人員經常使用的大多數數據類型,例如列表,集合,排序集和散列等等。這使得Redis很容易被用來解決各類問題,由於咱們知道哪些問題能夠更好使用地哪些數據類型來處理解決。性能優化

操做具備原子性 - 全部Redis操做都是原子操做,這確保若是兩個客戶端併發訪問,Redis服務器能接收更新的值。服務器

多實用工具 - Redis是一個多實用工具,可用於多種用例,如:緩存,消息隊列(Redis本地支持發佈/訂閱),應用程序中的任何短時間數據,例如,web應用程序中的會話,網頁命中計數等。多線程

如何搭建?架構

一.加入Redis相關依賴

2、application.properties中加入redis相關配置

在@Configuration或者集成了這個註解的註解標識的類中聲明一個Redis的bean,本例是在入口類上聲明的Bean:

在Controller裏注入StringRedisTemplate:

啓動瀏覽器訪問:

以上是手動進行redis的操做,那如何進行自動的的緩存操做呢?

在啓動類中添加註解

@EnableCaching會爲每一個bean中被 @Cacheable, @CachePut and @CacheEvict修飾的public方法進行緩存操做。

緩存的用法

這個方法在userId相同形同的狀況下,第一次調用的時候會執行方法,之後每次在調用的時候會讀取緩存中的數據。

緩存的註解介紹:

@Cacheable

這個註解,會每次先檢查是否執行過這個方法,在從緩存數據庫中查看key是否相等,若是找到了,從緩存中讀取,沒有匹配的那麼執行該方法,將結果緩存。順便在此給你們推薦一個Java架構方面的交流學習羣:698581634,進羣便可獲取Java架構師資料:有Spring,MyBatis,Netty源碼分析,高併發、高性能、分佈式、微服務架構的原理,JVM性能優化這些成爲架構師必備的知識體系,羣裏必定有你須要的資料,你們趕忙加羣吧。

緩存都是經過key-value進行儲存的,value或cacheNames必須指定(value是cacheNames的別名),指定多個value用(value = {"value1", "value2"})若是沒有指定key,spring會提供一個默認的KeyGenerator,這個KeyGenerator根據參數生成key,若是方法沒有參數返回KeyGenerator.EMPTY,若是有一個參數返回這個實例,若是有多個參數返回包含這些參數的SimpleKey。能夠經過繼承CachingConfigurerSupport本身指定KeyGenerator,類上加@Configuration註解。也能夠像上面那樣本身指定key,須要瞭解SPEL表達式。

多線程的狀況下,可能同時會有多個線程同時進入一個沒被緩存過的方法,這樣會致使多個線程都會執行一遍方法,sync="true"會將第一次計算返回值的這個方法lock,計算完成後將結果緩存

備註:Redis最爲經常使用的數據類型主要有如下:

  •  String
  •  Hash
  •  List
  •  Set
  •  Sorted set
  •  pub/sub
  •  Transactions

原文連接:https://www.toutiao.com/a6618867120228811268/#comment_area

相關文章
相關標籤/搜索