jfinal 越來越流行, jfinal的redis插件默認的序列化方式是fst。 但是系統中其他項目中用的是spring data redis中的StringRedisTemplate,所有的value都是通過gson轉化成String放進去的。
直接用jfinal的redis插件去取的話會出現錯誤。所以需要對默認序列化方式進行修改。
代碼很簡單, 如下:
// 添加 redis 插件
RedisPlugin redisPlugin = new RedisPlugin("xxx", "localhost");
redisPlugin.setSerializer(new ISerializer() {
@Override
public byte[] keyToBytes(String key) {
return SafeEncoder.encode(key);
}
@Override
public String keyFromBytes(byte[] bytes) {
return SafeEncoder.encode(bytes);
}
@Override
public byte[] fieldToBytes(Object field) {
return valueToBytes(field);
}
@Override
public Object fieldFromBytes(byte[] bytes) {
return valueFromBytes(bytes);
}
@Override
public byte[] valueToBytes(Object value) {
return SafeEncoder.encode(value.toString());
}
@Override
public Object valueFromBytes(byte[] bytes) {
if(bytes == null || bytes.length == 0)
return null;
return SafeEncoder.encode(bytes);
}
});
代碼很簡單, 所以直接在config類裏面就寫了。 有特殊需求的同學可以根據這個思想繼續發揮。