序列化和反序列化?:
序列化:將對象轉換為二進制數據,以便存儲到Redis中。
反序列化:將Redis中的二進制數據轉換回對象,以便在應用程序中使用。
1. 默認序列化器的問題
如果不配置序列化器,RedisTemplate會使用默認的序列化器(JdkSerializationRedisSerializer)。
默認序列化器的問題:
序列化后的數據是Java特有的二進制格式,不可讀且不通用。
數據存儲到Redis后,無法通過其他語言(如Python、Node.js)直接讀取。
序列化后的數據體積較大,影響存儲和傳輸效率。
2. 自定義序列化器的優勢
在RedisConfig類中,使用了以下序列化器:
StringRedisSerializer:用于序列化和反序列化鍵(key)。
將鍵轉換為字符串,便于閱讀和管理。
例如,鍵user:1會直接存儲為字符串"user:1"。
FastJsonRedisSerializer:用于序列化和反序列化值(value)。
使用FastJSON庫將對象轉換為JSON字符串,便于跨語言使用和調試。
例如,對象User{id=1, name="Alice"}會存儲為JSON字符串{"id":1,"name":"Alice"}。
自定義序列化器的優點:
可讀性:數據存儲為字符串或JSON格式,便于查看和調試。
跨語言兼容性:JSON是通用的數據格式,可以被其他語言解析。
效率:JSON序列化通常比Java默認序列化更高效,數據體積更小。