Redis的value序列化方式一般有两种:JSON方式和JDK方式

有以下几个序列化工具类:

redis支持的序列化 redis序列化方式哪几种_redis


第一次使用的是JDK方式进行测试

使用jdk方式需要pojo类实现Serializable接口

public void addByJDK() {
        //随机生五万条消息的一个方法
        List<User> list = randomUser();
        
        long t1 = System.currentTimeMillis();
        ListOperations<String, User> opsForList = redisTemplate.opsForList();
        opsForList.leftPushAll("jdk", list);
        long t2 = System.currentTimeMillis();
        
        System.out.println("jdk方式序列化50000条数据:"+(t2-t1)+"毫秒");
    }
最终的结果为1224毫秒,

第二次是使用JSON的序列化方式

public void addByJSON() {
      //随机生五万条消息的一个方法
        List<User> list = randomUser();
        
        long t1 = System.currentTimeMillis();
        ListOperations<String, User> opsForList = redisTemplate.opsForList();
        opsForList.leftPushAll("json", list);
        long t2 = System.currentTimeMillis();
        
        System.out.println("ByJson:50000条:"+(t2-t1)+"毫秒");
    }
最终的结果为:452毫秒

当然这两种方式都是直接将List存入redis,实际的redis长度只是1,得出的结果是JSON的方式优于JDK

最后测试存入hash,使用JDK序列化方式

public void addHash() {
		//随机生成五万对象,map的key值为对象的id
        Map<String, User> map = randomUsermap();
        
        long t1 = System.currentTimeMillis();
        HashOperations<String, Object, Object> opsForHash = redisTemplate.opsForHash();
        opsForHash.putAll("hash", map);
        long t2 = System.currentTimeMillis();
        
        System.out.println("hash:50000条:"+(t2-t1)+"毫秒");
    }
最终的结果为650毫秒