某个业务场景需要将list超过10个元素时截取前10个然后再丢memcached缓存,因此写了这么一行代码
if(list.size()>10){ list=list.subList(0, 10);}cache.put(key,list)
然而put返回了false,于是怀疑是序列化问题。
做了下如下测试System.out.println(list instanceof Serializable);System.out.println(list.subList(0, 10) instanceof Serializable);//返回如下truefalse
也就是说sublist没有实现序列化,查看源码发现果真如此,因此不能直接将subList返回结果直接丢缓存。
只能重新封装下cache.put(key,new LinkedList(cache.put(key,list)))
作者:初龙
原文链接:
本文由于2017-07-17 09:16:18自动同步至cnblogs
本文基于 许可协议发布,转载必须保留署名及链接。