码迷,mamicode.com
首页 > 其他好文 > 详细

redis存储对象,实体类新加字段空指针问题处理

时间:2016-08-11 15:37:51      阅读:378      评论:0      收藏:0      [点我收藏+]

标签:

 

redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。

一般用缓存对象时,通过序列化存储,在实体类新加字段的时候,反序列化成对象是新加字段会为空,这个问题很容易被忽略,如果自己没有做好处理,上线会有大量的空指针异常,为解决这个问题,我们对做了一些对redis的key做了处理。

eg.我们给一个活动配置加了缓存。

class Activity{

  String name;//名称

  Boolean limit1;//参与活动限制1

  Boolean limit2;//参与活动限制1

...

if(limit1){

//符合条件。。

}

redis key ;ACTIVITY_KEY expire time:1hour

如果我们现在已经在正式环境上运行一段时间表现良好,现在我们加了一个限制limit3;

获取到缓存中Activity的limit3是null的,

if(limit3){//throw NullPointExecption

//符合条件。。

}

项目中可能类似的地方会比较多我的处理办法是key+version(Activity.class);

private static int version(Class clazz){
  return clazz.getDeclaredFields().length;
}

通过标记class中所有field的数量加入缓存,在添加实体类中的属性时更新后会自动将redis的key替换掉,从而达到避免空指针的问题

redis存储对象,实体类新加字段空指针问题处理

标签:

原文地址:http://www.cnblogs.com/jgig11/p/5760846.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!