Javascript 如何在哈希对象中存储指向redis列表元素的指针?

Javascript 如何在哈希对象中存储指向redis列表元素的指针?,javascript,node.js,database,data-structures,redis,Javascript,Node.js,Database,Data Structures,Redis,我知道您无法嵌套redis数据结构。让我解释一下我的设计: 我有一个排序集,其中集合中的每个元素都是FIFO redis列表的键名 我还需要对每个元素进行直接查找,并将其存储在散列中。在散列中,我希望能够直接指向redis列表中的元素 这可能吗?有什么好办法吗?列表不适用于随机访问(即通过索引)-LRANGE是一个昂贵的操作。换句话说,FIFO+随机访问它不是链表的作业。链表不适合随机访问(即通过索引)-LRANGE是一项昂贵的操作。换言之,FIFO+随机访问它不是链表的作业。可能会将其位置的整

我知道您无法嵌套redis数据结构。让我解释一下我的设计:

我有一个排序集,其中集合中的每个元素都是FIFO redis列表的键名

我还需要对每个元素进行直接查找,并将其存储在散列中。在散列中,我希望能够直接指向redis列表中的元素


这可能吗?有什么好办法吗?

列表不适用于随机访问(即通过索引)-LRANGE是一个昂贵的操作。换句话说,FIFO+随机访问它不是链表的作业。

链表不适合随机访问(即通过索引)-LRANGE是一项昂贵的操作。换言之,FIFO+随机访问它不是链表的作业。

可能会将其位置的整数存储在列表中?但列表可能会更改,项目可以删除和更新。然后可能会反过来。将哈希键存储在列表中?嗯,这是可能的。通过这样做,我可以通过散列直接查找订单,同时通过列表维护FIFO行为。因为每个散列键的值中可能有多个对象,我可能必须生成每个值的uuid,以便与列表中的散列键一起存储。可能会存储其在列表中位置的整数?但列表可能会更改,项目可以被删除和更新。然后可能反过来。将哈希键存储在列表中?嗯,这是可能的。通过这样做,我可以通过散列直接查找订单,同时通过列表维护FIFO行为。因为每个散列键的值中可能有多个对象,我可能必须生成每个值的uuid以与列表中的散列键一起存储。如果我接受Jonas W.的建议并将数据存储在散列表中,然后在列表中存储标识每个存储对象的uuid,这样我就可以在进行O(1)查找的同时维护列表的时间顺序属性。唯一的问题是删除。如果我从哈希表中删除一个对象,我还必须将列表名的键存储在该对象中,然后执行LRANGE以查找元素。。。谢天谢地,我并不期望在任何给定的时间在单个列表中存储超过十几个元素。当然,我希望它尽可能的高效。@MatthewDarnell如果你的列表最多有十几条,那应该不会是一个真正的问题,尽管效率有点低。当N变大时,O(N)是一个PITA。如果我接受Jonas W.的建议,将数据存储在哈希表中,然后存储一个标识列表中每个存储对象的uuid,那么我可以在进行O(1)查找的同时维护列表的时间顺序属性。唯一的问题是删除。如果我从哈希表中删除一个对象,我还必须将列表名的键存储在该对象中,然后执行LRANGE以查找元素。。。谢天谢地,我并不期望在任何给定的时间在单个列表中存储超过十几个元素。当然,我希望它尽可能的高效。@MatthewDarnell如果你的列表最多有十几条,那应该不会是一个真正的问题,尽管效率有点低。当N变大时,O(N)是PITA。