redis 儲存物件的方法對比分析

2022-09-21 01:24:10 字數 2305 閱讀 1080

問題背景:

原來專案裡面全部是直接redis儲存物件的json資料,需要頻繁的序列化和反序列化,後來考慮更換專案中的redis儲存物件為hash物件儲存的,但是獲取後不能方便的set get操作,很是蛋疼,怎麼才能解決這個問題呢?

存放redis的時候,直接先用fastjson 或者 jackjson或者gson把物件序列化為json資料,然後用直接存放,key表示使用者id或許和openid,value則是物件的json資料

public string get(string key)

public void set(string key, string json)

redistemplate.boundvalueops(key).set(json);

}優點:雖然需要序列化和反序列化,但是可以直接操作物件的方法,方便快捷

缺點:需要序列化和反序列化,並且修改單個字段,需要獲取整個json,修改後,序列化儲存,浪費空間,浪費時間,效率低

key代表主鍵,比如使用者id,或者openid,value是乙個map,對應各個欄位的屬性和值

存放單個字段

public void hset(string key, string field, string obj)

存放整個:

public void hsetmap(string key,map map)

優點:儲存方方便,節省記憶體空間,並且可以直接對單個字段修改,而不用獲取整個物件,效率高

缺點:獲取value後,是個map,不能方便的直接呼叫(set get)處理,需要手動map.get(filed)或者map.put(field,value)

其實關於map和pojo的轉換問題,網上給出了利用反射做的轉換方法,但是加上了轉換和反轉,這和序列化和反序列化的問題一樣了,效率問題,也不敢指直接用,糾結,思考再三,還是先維持**不動了,以後考慮好了再說,或者廣發網友有啥好解決方法,請多多指教哈!

序列化工具類實現

public class serializeutil catch (exception e) finally

if (oos != null)

} catch (exception e2)

}return null;}/*

* 反序列化

* */

public static object deserialize(byte bytes)catch(exception e)finally catch (exception e2)

}return null;}}

獲取jedis例項

public class redisconnection catch (exception e) }/*

* 獲取jedis例項

* */

public synchronized static jedis getjedis()

jedis jedis = jedispool.getresource();

jedis.auth("redis");//密碼

return jedis;

} catch (exception e) }}

redis操作類

public class redisops

public static string get(string key)

public static void setobject(string key,object object)

public static object getobject(string key)

}user物件

public class user implements serializable

public user(int id,string name)

//setter和getter方法}測試

public class redistest

@test

public void testobject()

}redis操作類

public class redisops

public static object程式設計客棧 getjsonobject(string key,class clazz)}測試

@test

public void testobject2()

redis操作類

public class redisops

public static string hget(string key)}測試

@test

public void testobject3()

本文標題: redis 儲存物件的方法對比分析

本文位址:

python HDF和CSV儲存優劣對比分析

小資料用csv,大資料用h5 結論1 幾百kb以上的資料都用h5比較好 結論2 幾kb的資料h5反而很慢 程式import pandas as pd impwww.cppcns.comort numpy as np from wja.wja tool import test time as tt f...

ceph 儲存 對比 分布式儲存系統 Curve

curve 是網易開源的高效能 高可用 高可靠分布式儲存系統,具有非常良好的擴充套件性。基於該儲存底座可以打造適用於不同應用場景的儲存系統,如塊儲存 物件儲存 雲原生資料庫等。curve 的設計開發始終圍繞三個理念 一是順應當前儲存硬體設施發展趨勢,做到軟硬體結合打造頂級的儲存產品 二是秉持 can...

Excel視覺化分析方法對比分析

本文為學習天善學院李奇老師用資料說話 excel bi商業智慧型分析零基礎精講課程筆記。excel常用的視覺化分析方法中有,對比分析 結構分析 透視分析 其他分析。常言道,不比不知道,一比嚇一跳,對比分析可以幫我們達到 知己知彼,百戰不殆 的目的,是商業分析中最為常見和重要的方法。對比分析主要有如下...