memcached subList序列化问题

Posted 初开之道

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了memcached subList序列化问题相关的知识,希望对你有一定的参考价值。

某个业务场景需要将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);
//返回如下
true
false

也就是说sublist没有实现序列化,查看源码发现果真如此,因此不能直接将subList返回结果直接丢缓存。
只能重新封装下

cache.put(key,new LinkedList(cache.put(key,list)))

作者:chulung

原文链接:https://chulung.com/article/65

本文由MetaCLBlog于2017-02-11 09:00:02自动同步至cnblogs

false

以上是关于memcached subList序列化问题的主要内容,如果未能解决你的问题,请参考以下文章

Java List的SubList使用问题

源代码剖析tornado-memcached-sessions —— Tornado session 支持的实现

Android Parcelable反序列化报错笔记:java.lang.RuntimeException: Unmarshalling unknown type code at offset(代码片

谈谈在.NET Core中使用Redis和Memcached的序列化问题

java 中List.subList 总结

ArrayList#subList这四个坑,一不小心就中招