2015-10-30 44 views
0


我们正在开发处理数百万条记录的系统。需要在设计Redis结构时提出建议

Redis的结构
关于Redis的结构,我们计划使用哈希为每个设备,用户等,而且所有搜索/查询的字段将被添加为集哈希像下面 下面是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) { 

      }) 
     } 

一旦做到这一点的计划是使用一套查询来获得各种不同的标签,状态,日期和包装盒范围查询。你们推荐这个吗?我们计划运行负载测试以及..但要检查是否有更好的方法

要求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

事实上,你把数据放在散列中,然后你可以按照不同的标准对它们进行组织,或者在未排序的集合中排序。

实际上,当您在Redis中存储数据时,如果您直接构建和使用索引,那么确实如此。

+0

感谢您的回复!你对redis结构的看法。 – batwadi

+1

@prakash总之,我在回答中告诉你看起来很好:D –