天天看點

JdkSerializationRedisSerializer、GenericJackson2JsonRedisSerializer、Jackson2JsonRedisSerializer序列化效率

原文位址:https://www.i847.cn/article/8.html

RedisTemplate序列化工具效率對比:

1.JdkSerializationRedisSerializer

2.GenericJackson2JsonRedisSerializer

3.Jackson2JsonRedisSerializer

測試代碼片段:

@Test
public void test7(){
  Page<SysMessageEvent> page = sysMessageEventDao.findAll(Pages.Helper.pageable(1, 200, null));
  List<SysMessageEvent> list = page.getContent();
  JdkSerializationRedisSerializer j = new JdkSerializationRedisSerializer();
  GenericJackson2JsonRedisSerializer g = new GenericJackson2JsonRedisSerializer();
  Jackson2JsonRedisSerializer j2 = new Jackson2JsonRedisSerializer(List.class);
  TimeTest tt = new TimeTest();
  tt.setStartTime();
  byte[] bytesJ = j.serialize(list);
  tt.setEndTime();
  System.out.println("JdkSerializationRedisSerializer序列化時間:"+tt.getExcuteTime() + "ms,序列化後的長度:" + bytesJ.length);
  tt.setStartTime();
  j.deserialize(bytesJ);
  tt.setEndTime();
  System.out.println("JdkSerializationRedisSerializer反序列化時間:"+tt.getExcuteTime());
  tt.setStartTime();
  byte[] bytesG = g.serialize(list);
  tt.setEndTime();
  System.out.println("GenericJackson2JsonRedisSerializer序列化時間:"+tt.getExcuteTime() + "ms,序列化後的長度:" + bytesG.length);
  tt.setStartTime();
  g.deserialize(bytesG);
  tt.setEndTime();
  System.out.println("GenericJackson2JsonRedisSerializer反序列化時間:"+tt.getExcuteTime());
  tt.setStartTime();
  byte[] bytesJ2 = j2.serialize(list);
  tt.setEndTime();
  System.out.println("Jackson2JsonRedisSerializer序列化時間:"+tt.getExcuteTime() + "ms,序列化後的長度:" + bytesJ2.length);
  tt.setStartTime();
  j2.deserialize(bytesJ2);
  tt.setEndTime();
  System.out.println("Jackson2JsonRedisSerializer反序列化時間:"+tt.getExcuteTime());
}
           

測試資料(總共200條記錄的List集合),單條類似:

{"channel":"[email protected]","createTime":1526973952000,"doneHost":"192.168.80.10:62016","doneServer":"he-pm","doneTime":1526973952000,"eventInfoJson":"{\"userName\":\"Mos.Jiang\",\"targetId\":\"250524c0-8869-4fc2-a4aa-278a5a5b3197\",\"localId\":\"250524c0-8869-4fc2-a4aa-278a5a5b3197\",\"first\":\"您好,您賬号已經登入\",\"keyword1\":\"2018年05月22日 15:25\",\"keyword2\":\"127.0.0.1\",\"remark\":\"如果本次登入不是您本人所為,說明您的帳号已經被盜!為減少您的損失,請立即聯系客服 4008271580。\"}","hasDone":1,"id":"006bdac0-0ba0-498d-b654-28fa6038f747","sendCount":1,"sendTime":1526973952000,"senderInfo":"com.mj.he800.pm.service.user.UserBaseInfoService#userLogin-215"}

測試結果:

JdkSerializationRedisSerializer序列化時間:11,序列化後的長度:94551

JdkSerializationRedisSerializer反序列化時間:15

GenericJackson2JsonRedisSerializer序列化時間:18,序列化後的長度:151108

GenericJackson2JsonRedisSerializer反序列化時間:14

Jackson2JsonRedisSerializer序列化時間:5,序列化後的長度:125489

Jackson2JsonRedisSerializer反序列化時間:3

簡單地可以看出,Jackson2JsonRedisSerializer序列化和反序列化效率高,JdkSerializationRedisSerializer序列化後的結果最短