我们正在开发处理数百万条记录的系统。
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/