從框架的角度來看,存儲在Redis中的數據只是字節數。雖然Redis本身支持各種類型,但大多數情況下這些都是指數據存儲的方式而不是數據的存儲方式代表。由用戶決定信息是否被翻譯成字符串或任何其他對象。用戶(自定義)類型和原始數據之間的轉換(反之亦然)在Spring Data Redis中通過RedisSerializer接口(包org.springframework.data.redis.serializer)處理,顧名思義,它負責處理序列化過程。開箱即用的多個實現,其中兩個在本文檔中已經提到過:StringRedisSerializer和JdkSerializationRedisSerializer。但是,可以通過Spring 3 OXM支持使用OxmSerializer進行對象/ XML映射,或者使用JacksonJsonRedisSerializer,Jackson2JsonRedisSerializer或GenericJackson2JsonRedisSerializer來以JSON格式存儲數據。請注意,存儲格式不僅限於值 - 它可以用於鍵,值或哈希,沒有任何限制。
默認情況下,RedisCache和RedisTemplate配置為使用Java本機序列化。 眾所周知,Java本機序列化允許由利用易受攻擊的庫和類注入未經驗證的字節碼的有效負載引起的遠程代碼執行。 在反序列化步驟中,操作輸入可能導致應用程序中不需要的代碼執行。 因此,請勿在不受信任的環境中使用序列化。 通常,我們強烈建議使用任何其他消息格式(例如JSON)。
[https://docs.spring.io/spring-data/redis/docs/1.8.20.RELEASE/reference/html/#redis:serializer]
Spring-data-redis支持的序列化方式:
org.springframework.boot.autoconfigure.cache.RedisCacheConfiguration
順便附上自定義key生產:
微信公眾號