node.js - 设计Redis结构需要建议

标签 node.js 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"限制 0 10

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

最佳答案

事实上,您将数据放在哈希中,然后根据不同的标准将其组织成集合,无论是未排序的集合还是已排序的集合。

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

关于node.js - 设计Redis结构需要建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33443523/

相关文章:

javascript - 我应该如何进行异步单元测试?

javascript - 如何在expressjs路由器中使用Async/Await?

C++ Redis hiredis编译错误?

javascript - 使用 Redis 和 PHP 进行分页

javascript - 在 Redis 中存储嵌套的 JavaScript 对象 - NodeJS

javascript - fluent-ffmpeg:如何在 node.js 中将立体声 mp3 拆分为 2 个单声道文件?

javascript - 向函数添加值访问器

node.js - Mongoose:特定用户查询的所有点的总和

redis - 如何使用Sentinel禁用redis主从复制

redis - 如何在 Redis key 中使用计数器?