修改jfinal默认的redis序列化方式

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

评论区

JFinal

2017-02-26 12:04

有不少小伙伴碰到过 RedisPlugin 改变序列化策略的问题,感谢你的分享

icer

2017-02-27 14:39

应该的, 客气啦

jide918

2017-02-27 15:33

太感谢啦!!正好被这个问题纠结了一阵

icer

2017-02-27 18:43

@jide918 能帮到你最好了

bing086

2017-03-11 20:12

感谢!

wumugulu

2017-11-29 09:30

nb,解决了我的实际问题,爆赞一个~~~

铂金蛋蛋

2018-02-06 13:59

AI-wen

2018-07-13 15:10

zhangwenhe

2018-11-15 19:26

谢谢大神