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类里面就写了。 有特殊需求的同学可以根据这个思想继续发挥。