现在有一张表 
字段
id 值 时间 外键
需求
需要按时间查询,倒序正序,或者是某时间段查询现在我想把这个表里的数据放到redis 里该怎样存我的想法是
用sorted setkey 为 外键 score 为 时间毫秒数 value 为idid为 hash 的 key 这样可以实现需求 ,但 要想查询的时候得先从 set 里取出value 在循环 查询 这样会降低效率的如果查询的是100000条数据比直接用jdbc查mysql 慢一半,
可不可以一次查询都查出来啊或者 在set 的value 直接存 hash 用 java的客户端jedis哪位高手知道该怎么做啊 ,或者是别的想法,谢谢!

解决方案 »

  1.   

    发给你个例子:对新闻的“评论”//添加评论
    public static void addComment(Comment comment){
      Jedis jedis = RedisTools.getJedis();
      //添加评论记录
      jedis.set(COMMENT+comment.getId(), comment.toJsonStr());
      //全部评论和跟帖数量
      jedis.zadd(COMMENT_SORT+comment.getType()+":"+comment.getObjectId(), 0, comment.getId()+"");
      RedisTools.closeJedis(jedis);
    }//回复评论并跟贴//....
    //分页查询某条新闻下全部的评论
    public static List<Comment> getCommentList(int type, int objectId, int start, int pageSize){
       List<Comment> result = new ArrayList<Comment>();
       Jedis jedis = RedisTools.getJedis();
       SortingParams sortingParameters = new SortingParams();
       sortingParameters.desc();
       sortingParameters.limit(start, pageSize);
       sortingParameters.get(COMMENT+"*");
       List<String> list = jedis.sort(COMMENT_SORT+type+":"+objectId, sortingParameters);
       if(list!=null){
            for(String str: list){
      Comment comment = Comment.jsonStrToObject(str);
       if(comment!=null){
    result.add(comment);
       }
            }
        }
        RedisTools.closeJedis(jedis);
        return result;
    }