在设计Redis结构时需要建议

时间:2015-10-30 19:27:27

标签: node.js redis


我们正在开发处理数百万条记录的系统。

Redis结构
关于Redis结构,我们计划为每个设备,用户等使用Hashes,并且所有可搜索/查询字段将作为集合添加到哈希中,如下所示 下面是node.js代码(其POC代码)

 var key ="dvc:"+data.id;
    client.hmset(key,data,function(err, item){


        client.sadd("tag:"+data.Tag,key,function(err, result1){

        })
        client.sadd("serialNo:"+data.SerialNo,key,function(err, result1){

        })
        client.sadd("currentStatus:"+data.Status,key,function(err, result1){

        })
        client.sadd("createdOn:"+data.CreatedDate,key,function(err, result1){

        })

        if(data.Boxes && data.Boxes.length > 0) {
           for loop to add all boxes 
            client.sadd("boxes:" + data.Boxes[i].id, key, function (err, result1) {

            })
        }

完成此操作后,计划是使用set query来获取所有不同的标签,状态,日期和Boxes范围查询。你们推荐这个吗?我们也计划运行负载测试..但是想检查是否有更好的方法

要求2我们还需要快速搜索(自动完成) 为此,我们计划将所有可搜索的文本放入ZSET中并进行评分和使用  下面搜索的zrangebylex是示例代码

  client.zadd("zset",1,data.Tag+"|tag",function(err, result1){
        console.log("imei "+result1);
    })

    client.zadd("zset",1,data.SerialNo+"|SerialNo",function(err, result1){
        console.log("zset "+result1);
    })

获取查询    zrangebylex zset [2073“[2073 \ xff”LIMIT 0 10

一切看起来都不错但有任何建议。

1 个答案:

答案 0 :(得分:1)

实际上,您将数据放入哈希值中,然后按照不同的标准将它们组合在一起,无论是未排序的还是有序的集合。

实际上,当您在Redis中存储数据时,您确实喜欢直接构建和使用索引。