分别以JDK、json、Hash方式保存十万个User随机对象到Redis
2020-03-06 18:41
633 查看
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.Map; 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.dizewei.pojo.User; import com.dizewi.common.utils.DateUtil; import com.dizewi.common.utils.EmailUtil; import com.dizewi.common.utils.RandomUtil; import com.dizewi.common.utils.StringUtil; /** * @author 作者:dizewei * @version 创建时间:2020年3月2日 下午1:52:06 类功能说明 */ @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("classpath:applicationContext.xml") public class MyTest { @SuppressWarnings("rawtypes") @Autowired private RedisTemplate redisTemplate; @SuppressWarnings("unchecked") @Test public void jsonTest() throws ParseException { ArrayList<User> list = new ArrayList<User>(); for (int i = 0; i < 100000; i++) { User user = new User(); // id user.setId(String.valueOf(i+1)); // 随机姓名 user.setName(StringUtil.randomChineseName()); // 随机性别 user.setSex(StringUtil.randomSex()); // 随机手机号 int[] repeatRandomNumber = RandomUtil.repeatRandomNumber(0, 9, 9); String phone = "13"; for (int j : repeatRandomNumber) { phone += j; } user.setPhone(phone); // 随机邮箱 user.setEmilS(EmailUtil.getRandomLetterEmail(3, 20)); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date date1 = sdf.parse("1949-01-01"); Date date2 = sdf.parse("2001-12-31"); Date randomDate = DateUtil.randomDate(date1, date2); String format = sdf.format(randomDate); user.setBirthday(format); list.add(user); } //获取开始时间 long start = System.currentTimeMillis(); redisTemplate.opsForList().leftPushAll("json", list.toArray()); //获取结束时间 long end = System.currentTimeMillis(); System.out.println("json系列化方式"); System.out.println("耗时"+(end-start)); } @SuppressWarnings("unchecked") @Test public void jdkTest() throws ParseException { //获取开始时间 long start = System.currentTimeMillis(); for (int i = 0; i < 100000; i++) { User user = new User(); // id user.setId(String.valueOf(i+1)); // 随机姓名 user.setName(StringUtil.randomChineseName()); // 随机性别 user.setSex(StringUtil.randomSex()); // 随机手机号 int[] repeatRandomNumber = RandomUtil.repeatRandomNumber(0, 9, 9); String phone = "13"; for (int j : repeatRandomNumber) { phone += j; } user.setPhone(phone); // 随机邮箱 user.setEmilS(EmailUtil.getRandomLetterEmail(3, 20)); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date date1 = sdf.parse("1949-01-01"); Date date2 = sdf.parse("2001-12-31"); Date randomDate = DateUtil.randomDate(date1, date2); String format = sdf.format(randomDate); user.setBirthday(format); redisTemplate.opsForValue().set("jdk"+user.getId(), user); } //获取结束时间 long end = System.currentTimeMillis(); System.out.println("JDK系列化方式"); System.out.println("耗时"+(end-start)); } @SuppressWarnings("unchecked") @Test public void hsahTest() throws ParseException { Map<String, Object> myMap = new HashMap<>(); for (int i = 0; i < 100000; i++) { User user = new User(); // id user.setId(String.valueOf(i+1)); // 随机姓名 user.setName(StringUtil.randomChineseName()); // 随机性别 user.setSex(StringUtil.randomSex()); // 随机手机号 int[] repeatRandomNumber = RandomUtil.repeatRandomNumber(0, 9, 9); String phone = "13"; for (int j : repeatRandomNumber) { phone += j; } user.setPhone(phone); // 随机邮箱 user.setEmilS(EmailUtil.getRandomLetterEmail(3, 20)); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date date1 = sdf.parse("1949-01-01"); Date date2 = sdf.parse("2001-12-31"); Date randomDate = DateUtil.randomDate(date1, date2); String format = sdf.format(randomDate); user.setBirthday(format); myMap.put("user"+user.getId(), user); } //获取开始时间 long start = System.currentTimeMillis(); redisTemplate.opsForHash().putAll("hash", myMap); //获取结束时间 long end = System.currentTimeMillis(); System.out.println("Hash类型"); System.out.println("耗时"+(end-start)); } }[git链接附上 ](https://github.com/DZW-insist/JDK-JSON-Hash.git)
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- Redis通过序列化方式保存数组和对象
- Redis:存储对象的两种方式(序列化和json字符串)
- Redis:存储对象的两种方式(序列化和json字符串)
- redis内存优化————有着很多个域hash保存对象可以比建立很多个键值对更加节约内存
- redis通过json方案存取对象com.alibaba.fastjson.JSONException: syntax error, expect
- 用Jackson库来把Java对象保存为JSON格式时碰到的一些问题
- json的使用 前后台统一以对象的方式编程
- EXTJS分别用数组和JSON对象数组填充表格数据
- Json对象和字符串互相转换json数据拼接和JSON使用方式详细介绍(小结)
- Json对象和数组 格式,取值,特殊属性名取值:(处理方式和EL取值一样: 对象["属性名"])
- 加盐hash保存密码的正确方式
- Json对象与Json字符串互转(4种转换方式)
- Redis缓存系统-Java-Jedis操作Redis,基本操作以及 实现对象保存
- java方式的将java对象以及list或者map转化为json数据
- JS对json对象的调用成员2种方式
- 前台 JSON对象转换成字符串 相互转换 的几种方式
- Redis缓存系统(一)Java-Jedis操作Redis,基本操作以及 实现对象保存
- spring -mvc 将对象 已json返回时 忽略掉对象中的属性注解方式
- 加盐hash保存密码的正确方式
- 分别以字节、字符、行、随机四种方式读取文件(Java文件操作)