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