美文网首页
关于redis进行类似条件查询方法的学习

关于redis进行类似条件查询方法的学习

作者: 代码potty | 来源:发表于2018-08-14 21:48 被阅读0次

    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

    相关文章

      网友评论

          本文标题:关于redis进行类似条件查询方法的学习

          本文链接:https://www.haomeiwen.com/subject/qfebbftx.html