1

我们正在实施StackExchange.Redis来存储有关三个电子商务网站(大约 18,500 种产品)的所有信息。信息存储在 SQL Server 数据库中,映射到自定义对象,然后使用以下键命名约定添加到 Azure Redis 缓存中:

urn:products:{0}:{1}

(其中 0 是商店标识符,1 是产品标识符)。我阅读了KEYS、SCAN、FLUSHDB 等在哪里?并且能够获得与urn:products:{0}by 模式匹配的键。我们面临的问题是我们的项目涉及很多GetAllProducts List < Products >GetAllCategories List < Categories >然后被 LINQ 函数使用。

基于此:

  • 我尝试将所有产品(自定义对象列表)存储在一个键 ( urn:products:all) 中,但这种方法会在 Azure Redis 缓存中产生超时。这种方法是建议的方法吗?还是最好将每个产品存储在单独的密钥中?
  • 我认为循环每个键以获取每个值是不正确的。是否可以按模式获取键/值的集合?
  • 我也阅读了 HASHES,但我认为它们对我们的要求没有帮助。
4

1 回答 1

1

我想知道您一次调用大量记录的方法。我建议对它们进行切片不超过一千条记录。

Redis 的功能非常有限,因此可能无法满足您的要求。Redis 适用于缓存或简单的键值获取器和设置器。为此,您可以考虑其他基于内存的数据库,例如 MongoDB。

在您的情况下,Redis Set是结合或减去给定条件的最佳方法,或者Hash用于基于属性的对象存储。无论您选择哪种方法,您都将使用两种或多种数据类型,因为 Redis 数据类型不是那么通用。

RedisCookbook 描述了很好的例子。

于 2014-10-29T12:18:20.030 回答