memcached组件缓存的对象必须实现序列化

原创 2017年01月03日 15:41:34

在测试用Memcached组件缓存对象的时候,发现总是无法正确存储,保存的地方也没有报告任何异常,从服务器控制台看到的信息也没有保存成功的信息,但是取数据的时候,取出来的也是空的,在获取user对象name属性的地方抛出了空指针异常。很显然没有保存成功,这是为什么呢?昨天用字符串测试都OK,今天用对象就不行了呢?Memcached不号称是内存对象缓存组件吗?

想了下,终于知道为什么了?因为Memcached有独立的服务器端组件,是独立于应用系统的,从客户端(应用系统)保存对象到memcached是必须通过网络传输,而网络传入都是2进制数据,所以必须经过序列化,否则无法存储到Memcached服务器端的缓存中。而昨天测试的字符串成功是因为Java的String对象本身已经实现了序列化接口。于是将需要缓存的User对象序列化处理,然后再次测试,一切OK.

部分测试代码如下:

    public void put(String key,Object value)
    {   
     long start = System.nanoTime();
     memcachedClient.set(key, value);   
        System.out.println("put time :" + (System.nanoTime()-start)/1000000D);
    }

    public User get(String key)
    {   
     long start = System.nanoTime();
     User obj =  (User)memcachedClient.get(key);  
        System.out.println("get time :" + (System.nanoTime()-start)/1000000D);
        return obj;
    }

    public static void main(String[] args) 
    {      
     CacheClient cache = new CacheClient();
     User user = ObjectFactory.createUser(32);
     cache.put("32", user);
     user = cache.get("32");
     System.out.println(user.getName());
    } 

版权声明:本文为博主原创文章,未经博主允许不得转载。

Memcache中实体类序列化的总结

在客户端调用服务器端的Memcache缓存的时候,我需要将一个实体类存入到一个List中,然后将这个List进行缓存,在这个过程中,实体类需要进行 implements java.io.Seriali...
  • u014723529
  • u014723529
  • 2014年10月27日 11:42
  • 1859

Memcached中对象反序列化和json字符串用jackson解析成对象的比较

如果项目已经发布,如果临时想对某个在Memcached中的key修改值,那么以对象形式存储的话,将很难修改,但如果以字符串形式存储,通过json解析成对象的话,则会方便很多,因为通过界面往Memcac...
  • Kingson_Wu
  • Kingson_Wu
  • 2015年04月09日 10:48
  • 1738

Memcached的序列化处理保存数据

在我们使用Memcached的时候,有时候需要对其进行序列化处理才能够把自己想要的东西正常的显示出来。 那么,我们可以这么去做; ...
  • MyCodeDream
  • MyCodeDream
  • 2015年04月03日 21:39
  • 1554

大数据 memcache缓存序列化太慢策略

今天做一个大数据量的缓存; RankDetailMybatis{     private String battleTag;// 官方tag标签     private Long her...
  • adyuebanwan
  • adyuebanwan
  • 2014年04月29日 11:32
  • 1036

memcache 怎么存储的对象

memchache 怎样存储的对象
  • wangjun5159
  • wangjun5159
  • 2016年05月06日 09:30
  • 1861

memcached各种序列化策略之session共享

  • 2017年04月28日 11:48
  • 47.99MB
  • 下载

缓存Object(必须序列化)

public static final void saveObject(String path, Object saveObject) { FileOutputStream fos = nul...
  • yubang3223111
  • yubang3223111
  • 2017年03月28日 20:03
  • 539

memcached—向memcached中保存Java实体需注意的问题

memcached—向memcached中保存Java实体需注意的问题
  • wangshuxuncom
  • wangshuxuncom
  • 2014年12月15日 15:07
  • 2183

memcache 是如何存储java对象

根据我们项目的实践,用jsckson将对象序列化为json后存入memcache最快!! java自己的序列化效率不高。...
  • llettod
  • llettod
  • 2014年10月26日 14:29
  • 948

memcached-java客户端xmemcached使用总结

1. 最近调研了下memcached,之前2篇博客简单得介绍了用法,现在做个总结就当调研结束,本博客将从以下几个方面进行总结, a. xmemcached简介 b. xmemcached的分布式 c....
  • JThink_
  • JThink_
  • 2015年01月30日 09:42
  • 9966
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:memcached组件缓存的对象必须实现序列化
举报原因:
原因补充:

(最多只允许输入30个字)