redis的序列化方式
Redis的关于jdk、json以及hash的相关测试
package com.liuhe.test;
import java.util.HashMap;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.liuhe.StringUtils;
import com.liuhe.beans.User;
//注入配置文件
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations=“classpath:redis.xml”)
public class UserTest {
//注入 @SuppressWarnings("rawtypes") @Autowired RedisTemplate redisTemplate; //jdk序列化方式 @SuppressWarnings("unchecked") @Test public void testJdk(){ long star = System.currentTimeMillis(); for (int i = 0; i < 50000; i++) { User user = new User(); user.setId(i); user.setName(StringUtils.getRandomCn(3)); user.setGender(StringUtils.getSex()); user.setPhone(StringUtils.getPhone()); user.setEmail(StringUtils.getMail()); user.setBirthday(StringUtils.getBirthday()); redisTemplate.opsForValue().set("user"+i, user); } long end = System.currentTimeMillis(); System.out.println("共使用了"+(end-star)+"时间"); System.out.println("使用了jdk序列化方式"); System.out.println("增加了5万条数据"); } //json序列化方式 @SuppressWarnings("unchecked") @Test public void testJson(){ long star = System.currentTimeMillis(); for (int i = 0; i < 50000; i++) { User user = new User(); user.setId(i); user.setName(StringUtils.getRandomCn(3)); user.setGender(StringUtils.getSex()); user.setPhone(StringUtils.getPhone()); user.setEmail(StringUtils.getMail()); user.setBirthday(StringUtils.getBirthday()); redisTemplate.opsForValue().set("user"+i, user); } long end = System.currentTimeMillis(); System.out.println("共使用了"+(end-star)+"时间"); System.out.println("使用了json序列化方式"); System.out.println("增加了5万条数据"); } //hash序列化方式 @SuppressWarnings( { "unchecked", "rawtypes" } ) @Test public void testHash(){ long star = System.currentTimeMillis(); //创建map集合 HashMap map = new HashMap(); for (int i = 0; i < 50000; i++) { User user = new User(); user.setId(i); user.setName(StringUtils.getRandomCn(3)); user.setGender(StringUtils.getSex()); user.setPhone(StringUtils.getPhone()); user.setEmail(StringUtils.getMail()); user.setBirthday(StringUtils.getBirthday()); //存入map map.put("user"+i, user); } redisTemplate.opsForHash().putAll("hash_list", map); long end = System.currentTimeMillis(); System.out.println("共使用了"+(end-star)+"时间"); System.out.println("使用了hash序列化方式"); System.out.println("增加了5万条数据"); }
}
##################结论####################
使用jdk:
共使用了28394时间
使用了jdk序列化方式
增加了5万条数据
使用json:
共使用了27463时间
使用了json序列化方式
增加了5万条数据
使用hash:
共使用了707时间
使用了hash序列化方式
增加了5万条数据
上述测试报告显示:使用hash序列化方式性能最快。
- 点赞
- 收藏
- 分享
- 文章举报
- WeihanLi.Redis自定义序列化及压缩方式
- Redis:存储对象的两种方式(序列化和json字符串)
- WeihanLi.Redis自定义序列化及压缩方式
- java Redis Jedis存储Java对象 - (Java序列化为byte数组方式)
- Redis入门 – Jedis存储Java对象 - (Java序列化为byte数组方式)
- Spring-boot更改redisTemplate序列化方式
- 常见的redis的序列化方式
- Redis入门 – Jedis存储Java对象 - (Java序列化为byte数组方式)
- SpringBoot修改Redis序列化方式
- Redis入门 – Jedis存储Java对象 - (Java序列化为byte数组方式)
- Redis 序列化方式StringRedisSerializer、FastJsonRedisSerializer和KryoRedisSerializer
- redis-springboot-redistemplate更改序列化方式
- SpringBoot中使用Redis,并且指定存放到Redis中的数据的序列化方式。
- Spring Redis 序列化方式修改——RedisTemplate存取数据异常,在数据前有一串字符
- Redis– Jedis存储Java对象 - (Java序列化为byte数组方式) Java 序列化和反序列化
- Redis:存储对象的两种方式(序列化和json字符串)
- Redis入门 – Jedis存储Java对象 - (Java序列化为byte数组方式)
- SpringBoot整合Redis(附带序列化方式对比)
- Redis通过序列化方式保存数组和对象
- SpringBoot整合Redis(附带序列化方式对比)