Java package cn.only.hww;
import redis.clients.jedis.Jedis;
import java.util.*;
/** * author : Wayne Hu * date created : Created in 2024/6/26 10:41 * description : 测试zset的性能 * class name : cn.onle.ZsetTest */ public class ZsetTest {
public static void main(String[] args) { // 测试数据条数 final int DATA_SIZE = 100000; // 删除条数 final int DEL_SIZE = 100000; // redis连接 Jedis jedis = new Jedis("localhost", 6379); // 键集合 Set<String> keySet = new TreeSet<>(); // 数据集合 Map<String, Double> dataMap = new TreeMap<>(); // 生成测试使用的10w条数据 generateData(keySet, dataMap, DATA_SIZE); // 开始往redis中保存数据 startSavaData(jedis, dataMap); // 开始删除数据 startDelData(jedis, keySet, DEL_SIZE); // 释放资源 destroyProcess(jedis, dataMap, keySet); }
private static void destroyProcess(Jedis jedis, Map<String, Double> dataMap, Set<String> keySet) { // 释放资源 jedis.close(); // 使用完毕清空集合 dataMap.clear(); keySet.clear(); System.out.println("资源释放完毕"); }
private static void startDelData(Jedis jedis, Set<String> keySet, int DEL_SIZE) { System.out.println("开始删除数据"); // 开始删除数据 long begin = System.currentTimeMillis(); // 删除10w条数据 for (int i = 1; i <= DEL_SIZE; i++) { // 删除数据 jedis.zrem("test-zset", keySet.iterator().next()); } System.out.printf("数据删除完成,删除%s条数据,总共耗时:%s ms%n", DEL_SIZE, (System.currentTimeMillis() - begin)); }
private static void generateData(Set<String> keySet, Map<String, Double> dataMap, int DATA_SIZE) { System.out.println("开始生成数据"); // 开始时间 long begin = System.currentTimeMillis(); // 生成10w条数据,key从000001-100000;数据全部为“data-test” for (int i = 1; i <= DATA_SIZE; i++) { // Formatting the key to have leading zeros String key = String.format("%06d", i); // Assigning the same value to all entries Double value = Double.valueOf(i + "6666"); // Putting the key-value pair into the map dataMap.put(key, value); keySet.add(key); }
System.out.printf("数据生成完成,生成%s条数据,总共耗时:%s ms %n", dataMap.size(), (System.currentTimeMillis() - begin)); }
private static void startSavaData(Jedis jedis, Map<String, Double> dataMap) { System.out.println("开始往redis中保存数据"); // 将生成的数据存入zset中 long begin = System.currentTimeMillis(); // 清空一下 jedis.flushAll(); jedis.zadd("test-zset", dataMap); System.out.printf("数据存入zset完成,总共耗时:%s ms%n", (System.currentTimeMillis() - begin)); }
} |