我們在使用redis的時候經常會將物件序列化儲存到redis中,在取出的時候進行反序列化,如果物件過大在進行序列化和反序列化的時候www.cppcns.com會有一定效能問題。今天檢視了csredis原始碼發現在set和get的時候是支援byte型別,那麼問題來了如果我們將物件轉換成byte型別進行儲存是否會比序列化和反序列化操作快了?
list list = 程式設計客棧new list();
for (int i = 0; i < 1000; i++)
; list.add(user);
} stopwatch stopwatch = new stopwatch();
stopwatch.start(); // 開始監視**執行時間
//使用序列化
rds.hset("test2", "test2", list);
var list1 = rds.hget>("test2", "test2");
//使用byte方式
"test", "test1", obj程式設計客棧ecttobytes(list));
//var list2 = bytestoobject(rds.hget("test", "test1"));
stopwatch.stop(); // 停止監視
timespan timespan = stopwatch.elapsed; // 獲取當前例項測量得出的總時間
double hours = timespan.totalhours; // 總小時
double minutes = timespan.totalminutes; // 總分鐘
double seconds = timespan.totalseconds; // 總秒數
double milliseconds = timespan.totalmilliseconds;
console.writeline(+hours + " " + minutes + " " + seconds + " " + milliseconds);
cons程式設計客棧ole.readkey();
物件轉換成byte,和byte轉成物件公用方法。
///
/// 將乙個object物件序列化,返回乙個byte
///
/// 能序列化的物件
///
public static byte objecttobytes(object obj)
return buff;
} ///
/// 將乙個序列化後的byte陣列還原
///
///
///
public static object bytestoobject(byte bytes)
}注意點:兩種方式要分開執行!!!
序列化操作響應時間:
byte操作響應時間:
我們可以明顯看到byte速度要快於序列化操作,並且redis獲取值沒有問題
我們借助redis客戶端工具來看看redis裡面儲存的內容:
首先是序列化的內容
然後是byte的內容
這只是乙個簡單的測試,後續我還會結合專案實際情況進行測試。如果有寫的不對地方歡迎各位指出問題。
序列化和反序列化 C 序列化與反序列化。
序列化介紹 把物件用一種新的格式來表示。系列化只序列化資料。序列化不建議使用自動屬性 為什麼要序列化 將乙個複雜的物件轉換流,方便儲存與資訊交換。class program class person public int age 二進位制序列化 就是將物件變成流的過程,把物件變成byte class...
序列化與反序列化
把複雜的資料型別壓縮到乙個字串中 serialize 把變數和它們的值編碼成文字形式 unserialize 恢復原先變數 eg stooges array moe larry curly new serialize stooges print r new echo print r unserial...
序列化與反序列化
序列化是將物件處理為位元組流以儲存物件或傳輸到記憶體 資料庫或檔案。其主要目的是儲存物件的狀態,以便可以在需要時重新建立物件。相反的過程稱為反序列化。通過序列化,開發人員可以儲存物件的狀態,並在需要時重新建立該物件,從而提供物件的儲存以及資料交換。通過序列化,開發人員還可以執行類似如下的操作 通過 ...