redis序列化兼容問題

redis序列化兼容

問題:一個工具包,含有redis的工具(redisTemplate)。在接入其他項目時,別的項目需要使用。但是各個項目的序列化方式又各有不同。這個如何解決。

解決方案

  1. 通過配置多redisTemplate,通過注入不同的redisTemplate。
  2. 統一設置序列化方式
  3. 偶然發現redisTemplate還存在許多繼承的子類,裏面的是有集成序列化方式的,可以直接使用它的子類。這種方式最好,如StringRedisTemplate
public class StringRedisTemplate extends RedisTemplate<String, String> {
    public StringRedisTemplate() {
        this.setKeySerializer(RedisSerializer.string());
        this.setValueSerializer(RedisSerializer.string());
        this.setHashKeySerializer(RedisSerializer.string());
        this.setHashValueSerializer(RedisSerializer.string());
    }

    public StringRedisTemplate(RedisConnectionFactory connectionFactory) {
        this();
        this.setConnectionFactory(connectionFactory);
        this.afterPropertiesSet();
    }

    protected RedisConnection preProcessConnection(RedisConnection connection, boolean existingConnection) {
        return new DefaultStringRedisConnection(connection);
    }
}

思考

作爲工具包提供的redisTemplate應該,以自己項目爲基準。自己定義完整可用的序列化方式。不能根據其他項目去修改調整。個人見解:最好不要使用json的序列化,兼容性太差。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章