欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談Spring Data Redis讀不到設(shè)進(jìn)去的值

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

目標(biāo)

精通 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 注意讀、取一致性

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

案例

使用了 Redis 提供的兩種 Template:

  • RedisTemplate
  • stringRedisTemplate

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

這不很顯然嗎?是因?yàn)檫@倆 Template 不同呀!

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

解析

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

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

AbstractOperations#rawKey

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


可見,若存在 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構(gòu)造器直接指定了KeySerializer為 RedisSerializer.string():


RedisSerializer.string():


修正

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

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

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

相關(guān)文章

  • Spring定時任務(wù)注解@Scheduled詳解

    Spring定時任務(wù)注解@Scheduled詳解

    這篇文章主要介紹了Spring定時任務(wù)注解@Scheduled詳解,@Scheduled注解是包org.springframework.scheduling.annotation中的一個注解,主要是用來開啟定時任務(wù),本文提供了部分實(shí)現(xiàn)代碼與思路,需要的朋友可以參考下
    2023-09-09
  • java、spring、springboot中整合Redis的詳細(xì)講解

    java、spring、springboot中整合Redis的詳細(xì)講解

    這篇文章主要介紹了java、spring、springboot中整合Redis的詳細(xì)講解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • 如何用nacos搭建微服務(wù)注冊配置中心

    如何用nacos搭建微服務(wù)注冊配置中心

    這篇文章主要介紹了如何用nacos搭建微服務(wù)注冊配置中心問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • SpringBoot上傳文件并配置本地資源映射來訪問文件的實(shí)例代碼

    SpringBoot上傳文件并配置本地資源映射來訪問文件的實(shí)例代碼

    這篇文章主要介紹了SpringBoot上傳文件并配置本地資源映射來訪問文件的實(shí)例代碼,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • Spring?Boot使用Hibernate-Validator校驗(yàn)參數(shù)時的長度校驗(yàn)方法詳解

    Spring?Boot使用Hibernate-Validator校驗(yàn)參數(shù)時的長度校驗(yàn)方法詳解

    這篇文章主要給大家介紹了關(guān)于Spring?Boot使用Hibernate-Validator校驗(yàn)參數(shù)時的長度校驗(yàn)方法的相關(guān)資料,在Spring Boot中可以使用Spring Boot Validation來對參數(shù)名稱進(jìn)行校驗(yàn),需要的朋友可以參考下
    2023-08-08
  • Activiti如何啟動流程并使流程前進(jìn)

    Activiti如何啟動流程并使流程前進(jìn)

    這篇文章主要介紹了Activiti如何啟動流程并使流程前進(jìn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • 詳細(xì)講解Java輸入語句的寫法

    詳細(xì)講解Java輸入語句的寫法

    作為初步進(jìn)入java開發(fā)學(xué)習(xí)的小白來說,學(xué)習(xí)java語言一開始的時候得一步步的學(xué)習(xí),比如說java輸入語句應(yīng)該這么去實(shí)現(xiàn)呢,這篇文章主要給大家介紹了關(guān)于Java輸入語句的相關(guān)資料,需要的朋友可以參考下
    2024-03-03
  • 如何查看java進(jìn)程內(nèi)存占用情況

    如何查看java進(jìn)程內(nèi)存占用情況

    這篇文章主要介紹了如何查看java進(jìn)程內(nèi)存占用情況問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • SpringBoot?@GroupSequenceProvider注解實(shí)現(xiàn)bean多屬性聯(lián)合校驗(yàn)的示例代碼

    SpringBoot?@GroupSequenceProvider注解實(shí)現(xiàn)bean多屬性聯(lián)合校驗(yàn)的示例代碼

    這篇文章主要介紹了SpringBoot?@GroupSequenceProvider注解實(shí)現(xiàn)bean多屬性聯(lián)合校驗(yàn),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-08-08
  • maven多模塊pom配置實(shí)例詳解

    maven多模塊pom配置實(shí)例詳解

    這篇文章主要介紹了maven多模塊pom配置實(shí)例代碼,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-01-01

最新評論