最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談Spring Data Redis讀不到設進去的值

 更新時間:2021年09月24日 09:25:10   作者:JavaEdge.  
本文主要介紹了Spring Data Redis怎么讀不到我剛才設進去的值,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

目標

精通 Spring Data Redis 操作流程。

Spring Data提供了對市場上主流數(shù)據(jù)庫支持:

Spring Data Commons
Spring Data JPA
Spring Data KeyValue
Spring Data LDAP
Spring Data MongoDB
Spring Data Redis
Spring Data REST
Spring Data for Apache Cassandra
Spring Data for Apache Geode
Spring Data for Apache Solr
Spring Data for Pivotal GemFire
Spring Data Couchbase (community module)
Spring Data Elasticsearch (community module)
Spring Data Neo4j (community module)

而在使用時,難免會不動聲色的寫出一堆 bug。

1 注意讀、取一致性

當使用 Spring Data Redis 時,我們有時候會在項目升級的過程中,發(fā)現(xiàn)存儲后的數(shù)據(jù)有讀取不到的情況;另外,還會出現(xiàn)解析出錯的情況。

案例

使用了 Redis 提供的兩種 Template:

  • RedisTemplate
  • stringRedisTemplate

但當使用后者去存一個數(shù)據(jù)后,發(fā)現(xiàn)使用前者取不到對應數(shù)據(jù):

這不很顯然嗎?是因為這倆 Template 不同呀!

發(fā)散一下思維,試想若我們是不同項目的開發(fā)。一個項目只負責存儲,另外一個項目只負責讀取,兩個項目之間缺乏溝通。如此看來,這種問題是不是就很常見了?

解析

我們不可能直接將數(shù)據(jù)存取到 Redis,畢竟一些數(shù)據(jù)是對象類型,例如 String或自定義對象。因此需要在存取前對數(shù)據(jù)進行序列化或反序列化。

帶著key去存取數(shù)據(jù)時,會執(zhí)行

AbstractOperations#rawKey

在執(zhí)行存儲 K.V 到 Redis或從 Redis 讀數(shù)據(jù)前,對 key 進行序列化操作:


可見,若存在 keySerializer,則利用它序列化 key。
對于 StringRedisSerializer,它指定的 StringRedisSerializer:

public class StringRedisSerializer implements RedisSerializer<String> {

   private final Charset charset;
   
   @Override
   public byte[] serialize(@Nullable String string) {
      return (string == null ? null : string.getBytes(charset));
   }
 
}

若使用 RedisTemplate,則使用的JDK序列化:

public class JdkSerializationRedisSerializer implements RedisSerializer<Object> {

   @Override
   public byte[] serialize(@Nullable Object object) {
      if (object == null) {
         return SerializationUtils.EMPTY_ARRAY;
      }
      try {
         return serializer.convert(object);
      } catch (Exception ex) {
         throw new SerializationException("Cannot serialize", ex);
      }
   }
}

所以最后對 K 的讀取處理,采用的JDK序列化:


反序列化結(jié)果的確不同。

那如何指定 RedisSerializer 的?

以 StringRedisSerializer 為例。StringRedisTemplate構造器直接指定了KeySerializer為 RedisSerializer.string():


RedisSerializer.string():


修正

一定要注意一致性,例如讀寫的序列化方法需要一致:

  • 檢查自己所有的數(shù)據(jù)操作,是否使用了相同的 RedisTemplate
  • 即使相同,也要檢查所指定各種Serializer是否完全一致

到此這篇關于淺談Spring Data Redis讀不到設進去的值的文章就介紹到這了,更多相關Spring Data Redis讀不到值 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java中的同步與異步詳細介紹

    Java中的同步與異步詳細介紹

    這篇文章主要介紹了Java中的同步與異步詳細介紹,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • Java針對封裝數(shù)組的簡單復雜度分析方法

    Java針對封裝數(shù)組的簡單復雜度分析方法

    這篇文章主要介紹了Java針對封裝數(shù)組的簡單復雜度分析方法,簡單講述了java封裝數(shù)組時間復雜度分析的原理、實現(xiàn)方法與操作注意事項,需要的朋友可以參考下
    2020-03-03
  • SpringCloud Gateway網(wǎng)關功能介紹與使用

    SpringCloud Gateway網(wǎng)關功能介紹與使用

    SpringCloud Gateway 是 Spring Cloud 的一個全新項目,它旨在為微服務架構提供一種簡單有效的統(tǒng)一的 API 路由管理方式。這篇文章主要介紹了SpringCloud Gateway網(wǎng)關作用,需要的朋友可以參考下
    2022-12-12
  • java使用Runtime執(zhí)行系統(tǒng)命令遇到的問題

    java使用Runtime執(zhí)行系統(tǒng)命令遇到的問題

    這篇文章主要介紹了java使用Runtime執(zhí)行系統(tǒng)命令遇到的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Spring實戰(zhàn)之讓Bean獲取Spring容器操作示例

    Spring實戰(zhàn)之讓Bean獲取Spring容器操作示例

    這篇文章主要介紹了Spring實戰(zhàn)之讓Bean獲取Spring容器操作,結(jié)合實例形式分析了Bean獲取Spring容器的相關原理、實現(xiàn)方法及操作注意事項,需要的朋友可以參考下
    2019-11-11
  • Java中的split使用方法詳解

    Java中的split使用方法詳解

    這篇文章主要介紹了Java中的split使用方法詳解,Java 中 String 的 split 方法可以將字符串根據(jù)指定的間隔進行切割,經(jīng)過切割后得到的返回值是一個字符串數(shù)組,需要的朋友可以參考下
    2023-10-10
  • MAC?在類路徑或引導類路徑中找不到程序包?java.lang問題

    MAC?在類路徑或引導類路徑中找不到程序包?java.lang問題

    這篇文章主要介紹了MAC?在類路徑或引導類路徑中找不到程序包?java.lang問題及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • mybatis相同的sql查詢第二次查不出結(jié)果問題

    mybatis相同的sql查詢第二次查不出結(jié)果問題

    這篇文章主要介紹了mybatis相同的sql查詢第二次查不出結(jié)果問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • idea快速生成代碼配置的方法示例

    idea快速生成代碼配置的方法示例

    本文主要介紹了idea快速生成代碼配置的方法示例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Java單線程ThreadLocal串值問題解決方案

    Java單線程ThreadLocal串值問題解決方案

    這篇文章主要介紹了Java單線程ThreadLocal串值問題解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04

最新評論

嘉祥县| 河间市| 黄梅县| 潼南县| 霸州市| 丘北县| 汉中市| 开化县| 临夏县| 眉山市| 吉木乃县| 民乐县| 涟水县| 宁陵县| 成武县| 惠安县| 大方县| 青河县| 永康市| 石门县| 扎兰屯市| 随州市| 西乡县| 新宾| 成都市| 襄樊市| 三原县| 黄冈市| 时尚| 东方市| 镇平县| 弋阳县| 林口县| 黑河市| 栾川县| 教育| 龙岩市| 琼结县| 沈阳市| 南昌县| 泸州市|