redis想像mysql关系数据库一样查询可以借助集合哈希表来进行,今天晚上我做的测试过程:
将数据库查询的表数据全部放入一个泛型集合中,然后通过对这个集合某些需要的数据进行筛选然后分别存入集合或者哈希表中。
@Test
public void testRedis(){
JedisPool jedisPool = new JedisPool("127.0.0.1",6379);
Jedis jedis = jedisPool.getResource();
List<MusicList> lists = new ArrayList<>();
for (int i = 0; i<1000;i++){
MusicList musicList = new MusicList();
musicList.setMusicFlag(i);
lists.add(musicList);
}
List<MusicList> lt = new LinkedList<>();
List<MusicList> ht = new LinkedList<>();
List<MusicList> al = new LinkedList<>();
Date date1 = new Date();
for (int i = 0;i<1000;i++){
al.add(lists.get(i));
if (lists.get(i).getMusicFlag()<3){
lt.add(lists.get(i));
// jedis.sadd("below_3",object2String(lists.get(i)));
}
if (lists.get(i).getMusicFlag()>=3){
ht.add(lists.get(i));
// jedis.sadd("high_3",object2String(lists.get(i)));
}
}
jedis.hset("hhhh","musiclist",object2String(al));
jedis.hset("hhhh","below_3",object2String(lt));
jedis.hset("hhhh","high_3",object2String(ht));
Date date2 = new Date();
System.out.println("费时:"+(date2.getTime()-date1.getTime()));
/*Set<String> set = jedis.smembers("below_3");
for (String s:set){
MusicList m = new Gson().fromJson(s,MusicList.class);
System.out.println(m);
}*/
}
public String object2String(Object o){
return new GsonBuilder().serializeNulls().create().toJson(o);
}
首先测试以上代码,通过将这一千条的数据放到哈希表中,计算时间,结果如下:
image.png
内存初始情况如下:
image.png
运行后的内存情况如下:
image.png
大概是花费了47MS,然后我们再使用redis提供的sadd集合的插入方式,结果如下:
image.png
内存初始情况如下:
image.png
运行后的内存情况如下:
image.png
对比两个方法,我们可以发现,用哈希表的插入可以节省不少的时间,并且在redis的内存使用消耗上,哈希表的插入方法比集合一个个的插入要消耗少一点
参考链接:
https://blog.csdn.net/zbw18297786698/article/details/52904316
http://www.runoob.com/redis/server-info.html
网友评论