如何使用redis高效地存储分层数据?

2024-10-03 17:15:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在Redis中存储复杂的数据结构:

工作>;设备>;信号

{ 
   job_id: 1,
   name: 'test1',
   type: 3,
   ... 
   devices: [
              {
                id: '4deee341-9008-465a-adfd-df004fb70360',
                name: 'device 1',
                type: 3,
                ...
                signals: [{}, {}, ...]
              },
              {
                id: '62771a7f-f311-4912-9a8c-9d7b52d07c09',
                name: 'device 2',
                type: 3
                ...
                signals: [{}, {}, ...]

              }
          ] 
},
{ 
   job_id: 2,
   name: 'test2',
   type: 3,
   ...
   devices: [
              {
                id: '4deee341-9008-465a-adfd-df004fb70360',
                name: 'device 1',
                type: 3,
                ...
                signals: [{}, {}, ...]

              }
          ] 
}

我希望能够(高效地):

  1. 检索所有/一个作业及其作业详细信息、信号和设备计数
  2. 对于给定的作业检索所有设备及其信号
  3. 检索给定设备的所有信号(交叉作业-例如设备id 4deee341-9008-465a-adfd-df004fb70360)

几件事:

  • 一台设备可以有数千个信号
  • 没有一个对象(作业、设备或信号)经常更新

我通过创建多数据结构提出了以下解决方案,但我想知道这是否是正确的方法:

job:<JOB_ID>散列存储每个职务描述

job:<JOB_ID>:devices包含给定作业的设备ID列表的

device:<DEVICE_ID>散列存储每个设备描述

signals:<JOB_ID>:<DEVICE_ID>给定作业和设备的信号集(JSON字符串)

谢谢


Tags: namegtid数据结构信号devicetype作业