一、引入依赖
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>java-testdata-generator</artifactId>
<version>1.1.2</version>
</dependency>
二、使用案例
//创建一千个随机信息个人信息
final Jedis jedis = RedisDS.create().getJedis();
public static final String key = "TestData::Person";
public static final String provinceReg = "[\\u4E00-\\u9FFF]+?(?:省|自治区|特别行政区)|(?:天津|重庆|上海|北京)市";
@Test
public void createDataTest() {
ChineseNameGenerator nameGenerator = ChineseNameGenerator.getInstance();
ChineseMobileNumberGenerator mobileNumberGenerator = ChineseMobileNumberGenerator.getInstance();
GenericGenerator idcardGenerator = ChineseIDCardNumberGenerator.getInstance();
GenericGenerator addressGenerator = ChineseAddressGenerator.getInstance();
//生成一千个 姓名、手机号,身份证,地址
Pipeline pipeline = jedis.pipelined();
IntStream.range(0, 1000).forEach(x -> {
HashMap<String, String> map = new HashMap<>();
map.put("name", nameGenerator.generate());
map.put("mobile", mobileNumberGenerator.generate());
String idcard = idcardGenerator.generate();
map.put("idcard", idcard);
map.put("address", addressGenerator.generate());
String personKey = key + ":" + idcard;
pipeline.hmset(personKey, map);
});
pipeline.sync();
}
//对这一千个测试信息按省份分组
@Test
public void mapTest() {
Set<String> keys = jedis.keys(key + "*");
Pipeline pipeline = jedis.pipelined();
keys.forEach(key -> {
pipeline.hgetAll(key);
});
List<Object> list = pipeline.syncAndReturnAll();
Map<String, List<Map<String, String>>> personGroupByName = list.stream()
.map(x -> (Map<String, String>) x)
.collect(Collectors.groupingBy(x -> {
String address = x.get("address");
String province = ReUtil.getGroup0(provinceReg, address);
return province;
}));
personGroupByName.forEach((x, y) -> {
Console.log("省份:{},数量{}", x, y.size());
});
}
三、显示结果
redis.png