redis序列化问题

今天在现网发现程序做了一个full GC,heap堆栈出来,发现一个redis的序列化问题

从数据库获取了33w条数据,大小是1M多一点,然后之后在redisClient.put的时候,对这个集合做序列化,字节数变为了80M多。而内部的序列化是,ByteArrayOutputStream与ObjectOutputStream又复制内容导致最终内存暂用了200M左右

原因:

1、redis中序列化用的jdk的默认序列化,jdk序列化压缩比并不高

2、对象Bean的参数太多,这次保存只是用了8个,而这个Bean实际有40个参数,在jdk序列化的时候,也会记录这个无用参数的信息

 

优化方法:

1、不要一次性取那么多数据

2、换其他序列化方式

3、另写一个bean,只缓存需要的字段

4、如果可以的话,将Double改为int等,也可以节省内容

 

你可能感兴趣的:(工作总结,序列化问题)