回覆列表
  • 1 # EmacserVimer

    在springboot專案中,整合各種框架變得非常容易。下面簡單介紹一下如何在springboot專案中整合單機模式redis。叢集模式也差不多,這裡就不過多介紹了。

    首先你得安裝redis服務,無論在linux還是windows系統上。如果沒有安裝,請自行百度或使用其他科學網站幫助。隨後需要在專案的配置檔案中配置redis相關引數以及設定jedis連線池的引數。可參考下圖配置方式:

    由於本人使用了maven方式來構建專案,所以需要在專案的pom檔案中加入redis相關依賴。

    之後就需要實現redis配置檔案類。配置檔案的jedis連線池配置就不列出來了,反正就是根本properties檔案來一步一步設定,連線工廠也是跟連線池有關。這裡重點介紹一下redisTemplate的實現,以及與redis操作工具類的配合使用。可以根據下圖來進行個性化設定:實現配置檔案後,就可以在redis工具類RedisUtil中使用redisTemplate了。如下圖所示:這裡redisTemplate例項化是在redis配置類中實現的。直接將RedisUtil透過註解方式直接注入到spring容器中去,在此過程中使用工具類的setRedisTemplate方法例項化RedisTemplate。這樣就能直接透過@AutoWired註解去裝配Bean了。在RedisUtil工具類中,我們透過redisTemplate去操作資料結構。無論是一般資料(String),還是Map資料結構,還是List資料結構,都有相應的操作方法。如下圖:工具類完成後,在相應的服務層使用這個工具類來操作redis的資料結構實現相應業務。

    以上就是一個redis操作類在speingboot專案中的簡單實現。除了資料結構的操作,我們還能使用redis的特性來實現一些業務場景特定的功能。例如使用increment方法實現點贊功能;利用redis單執行緒特性生成唯一主鍵;將redis與Lua指令碼相結合,實現redis分散式鎖,當然這需要考慮到業務時間與過期時間的關係問題。

  • 2 # 會點程式碼的大叔

    如果是 Spring Boot 專案的話,整合 RedisTemplate 還是非常簡單的。

    01. 新增依賴

    pom.xml

    檔案中新增 redis 的相關依賴;如果不是 Maven 構建的專案,需要自己做相應的配置。

    02. 新增配置

    Redis 的相關配置,比如 IP、埠、埠、超時時間、連線池大小等等。

    03. 使用 RedisTemplate

    到了這一步,我們就可以使用 RedisTemplate 了,可能有些同學會有疑問,RedisTemplate 是 jar 裡面自帶的麼?只需要做兩個配置就可以使用了?

    其實就是 Spring Boot 的“約定大於配置”,很多配置 Spring Boot 都幫我們做好了,如果我們用它給的預設配置的話,就不需要做多餘的配置,如果你不想使用預設的配置,就需要告知 Spring Boot 你想怎麼做。

    04. 自定義 RedisTemplate

    如果我們使用預設配置的話,會有一些“坑”在裡面,執行完上面的程式碼後,我們會發現 Redis 中的 key 和 value 的前後,都會有一些奇怪的字元,類似於這樣:

    "\xac\xed\x00\x05t\x00\x05key01"

    這是因為預設的配置中,使用的是 JdkSerializationRedisSerializer 來進行序列化,雖然不影響我們使用 Java 進行操作 Redis,但是對於運維來說無疑是災難性的。這時候我們可以自定義 RedisTemplate ,增加一個配置類,修改 RedisTemplate 的序列化方式。

    05. RedisTemplate 的常用方法

    Redis 中包含 String、Hash、List、Set、ZSet 五中資料結構,RedisTemplate 針對每種資料結構都提供了豐富的方法。

    redisTemplate.opsForValue():針對 String 型別的操作;String 不僅是字串型,還包括整形和浮點型;

    redisTemplate.opsForHash():針對 Hash 的操作;

    redisTemplate.opsForList():針對 List 的操作;可以對下標元素操作,也可以對連結串列頭部和尾部操作;

    redisTemplate.opsForSet():針對 Set 的操作;包括兩個集合的交集和並集;

    redisTemplate.opsForZSet():針對 ZSet 的操作;

  • 中秋節和大豐收的關聯?
  • 為什麼好多大V看好券商,券商表現平平呢?