Spring Data Redis入門樣本:資料序列化 (四)

來源:互聯網
上載者:User

標籤:pen   iss   gpo   種類   排查   下載   cti   depend   buffer   

概述

RedisTemplate預設使用的是基於JDK的序列化器,所以儲存在Redis的資料如果不經過相應的還原序列化,看到的結果是這個樣子的:

可以看到,出現了亂碼,在程式層面上,不會影響程式的運行,但當出現資料錯誤,對資料進行排查時,就無從下手了。

序列化器

在Spring Data Redis中,使用者自訂類型和儲存資料之間的轉換(反之亦然)由org.springframework.data.redis.serializer包下的類進行處理。
這個包包含兩種類型的序列化程式,它們負責序列化過程:

  • 基於RedisSerializer的雙向序列化器
  • 通過RedisElementReader和RedisElementWriter進行元素的讀寫(2.0引進的)
    這兩種類型的序列化器主要區別在於,RedisSerializer主要序列化為byte[],RedisElementReader/RedisElementWriter使用ByteBuffer。
    基於RedisSerializer的序列化器有多種實現,可以直接使用,如:
  • StringRedisSerializer
  • JdkSerializationRedisSerializer(預設)
  • OxmSerializer(依賴於Spring OXM)
  • Jackson2JsonRedisSerializer/GenericJackson2JsonRedisSerializer(依賴於jackson)
序列化的範圍

序列化可以應用到 Key, Value, HashKey, HashValue上,在 RedisTemplate中,有四個屬於與之對應:
keySerializer、 valueSerializer、 hashKeySerializer、 hashValueSerializer

基於Json的序列化

引入Jackson的maven依賴:

<jackson.databind.version>2.8.5</jackson.databind.version><!-- jackson-databind --><dependency>    <groupId>com.fasterxml.jackson.core</groupId>    <artifactId>jackson-databind</artifactId>    <version>${jackson.databind.version}</version></dependency>

配置序列化器:

<!-- 緩衝序列化方式 --><!--對key的預設序列化器。預設值是StringSerializer --><bean id="stringRedisSerializer"      class="org.springframework.data.redis.serializer.StringRedisSerializer" /><!--是對value的預設序列化器,預設值是取自DefaultSerializer的JdkSerializationRedisSerializer。 --><bean id="genericJackson2JsonRedisSerializer"        class="org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer" />

重新設定RedisTemplate:

<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">    <property name="connectionFactory" ref="jedisConnectionFactory"/>    <property name="keySerializer" ref="stringRedisSerializer" />    <property name="valueSerializer" ref="stringRedisSerializer"/>    <property name="hashKeySerializer" ref="stringRedisSerializer"/>    <property name="hashValueSerializer" ref="genericJackson2JsonRedisSerializer" /></bean>

重新運行上一節的樣本,得到如下結果:

樣本說明
1. 查看redis的管理工具是:RedisDesktopManager,:https://redisdesktop.com/download

Spring Data Redis入門樣本:資料序列化 (四)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.