gpt4 book ai didi

data-structures - Redis 中的复合键/二级索引策略

转载 作者:IT王子 更新时间:2023-10-29 06:10:58 27 4
gpt4 key购买 nike

假设我有一些想要存储在 Redis 中的以下类型的数据:

* UUID
* State (e.g. PROCESSED, WAITING_FOR_RESPONSE)
* […] other vals

UUIDState 是我需要查询的仅有的两个变量

  • Redis 中的哪种数据结构最适合这种情况?
  • 我将如何构建 key ?

最佳答案

好吧,我不确定我是否完全理解,但我会尝试理解它。

假设您需要查找状态为 PROCESSED 的所有实体,您可以为这些使用集合:

SADD PROCESSED 123-abcd-4567-0000

然后您可以轻松找到所有具有 PROCESSED 状态的实体。你会为你想要的每个状态做同样的事情。

SMEMBERS PROCESSED

现在您还需要为所有实体及其值创建哈希值:

HSET 123-abcd-4567-0000 state PROCESSED
HSET 123-abcd-4567-0000 otherproperty valuedata

这将在哈希中设置要处理的 UUID 的“状态”(您需要弄清楚如何使它们保持同步,您可以使用脚本或只在代码中处理)

总而言之,您有 2 个主要结构:

  1. 设置将您的状态存储到 UUID 信息
    • 因此每个州有 1 组
  2. 用于将 UUID 存储到属性信息的哈希
    • 因此每个实体有 1 个哈希值

示例哈希

123-abcd-4567-0000 => { state: PROCESSED, active: true }
987-zxy-1234-0000 => { state: PROCESSED, active: false }

但如果这看起来不合适,请进一步说明。


如果您想减少 key 空间,因为每个实体的哈希值可能很多,您可以改为为每个属性创建一个哈希值:

HSET states 123-abcd-4567-0000 PROCESSED

因此每个属性都有一个散列,您的键是 UUID,值是作为散列键的属性的值。

示例哈希

state => { 123-abcd-4567-0000: PROCESSED, 987-zxy-1234-0000: PROCESSED }
active => { 123-abcd-4567-0000: true, 987-zxy-1234-0000: false }

关于data-structures - Redis 中的复合键/二级索引策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45314960/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com