程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> redis存儲對象,實體類新加字段空指針問題處理,redis指針

redis存儲對象,實體類新加字段空指針問題處理,redis指針

編輯:JAVA綜合教程

redis存儲對象,實體類新加字段空指針問題處理,redis指針


 

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替換掉,從而達到避免空指針的問題

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved