在 Redis 中存储 Dictionary of Dictionary (StackExchange.Redis)

Storing Dictionary of Dictionary in Redis (StackExchange.Redis)

我想在Redis中存储Dictionary of Dictionary。例如我有产品、订单、客户等...业务实体,它们都有 Id 和其他相关属性。

我正在使用最新版本的 StackExchage.Redis C#

期望: 1. 当我用 ID 10 保存产品时,它应该首先检查是否 产品类型实体可用 然后检查产​​品 ID 10 是否存在,如果是,则 return 整个产品。 2. 其他实体也一样。 Id 10 也可用于 Order 实体。

键:TypeName 值:Dict(int, Type)

每当发生任何写入时,不想更新整个字典,只想在字典中添加新记录或更新记录。

所以, 1. 每当需要所有产品时,我都可以 return inner dictionary.Values 2. 如果需要单个产品,那么我可以 return 一件产品 3.如果请求删除所有产品,那么它将一次性删除所有内容。 4. 使用 HashSet 为每个 ProductIds 设置超时?

看来你需要Redis Hashes。您可以为产品、订单等创建散列,并通过密钥存储每个项目。这是一个例子:

  • 正在将产品添加到 hash/Dictionary
    redis>  HSET product id:10 "{product_10_json}" id:11 "{product_11_json}"
    (integer) 2
  • 通过 id 检索单个产品。
    redis> HGET product id:10
    "{product_10_json}"
  • 获取所有产品列表
    redis> HGETALL product
    1) "id:10"
    2) "{product_10_json}"
    3) "id:11"
    4) "{product_11_json}"
  • 删除一个商品列表:

    redis> Hdel product id:10
    (integer) 1
    redis> HGETALL product
    1) "id:11"
    2) "{product_11_json}"

  • 要删除所有产品只需删除相应的键
    redis> del product
    (integer) 1

编辑:计算键中的项目数

Is there any command which will give me total values count? like product has 15 records

你应该使用HLEN

redis>HSET product product1 "Hello"
(integer) 1
redis> HSET product product2 "World"
(integer) 1
redis> HLEN product
(integer) 2