【问题标题】:Storing custom .Net objects in Azure Redis Cache with StackExchange.Redis使用 StackExchange.Redis 在 Azure Redis 缓存中存储自定义 .Net 对象
【发布时间】:2014-11-04 08:11:06
【问题描述】:

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

urn:products:{0}:{1}

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

基于此:

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

【问题讨论】:

  • 你不能@提问的人。
  • 当你问可以吗?这听起来像是基于意见的答案,所以不适合 SO
  • 删除了有问题的@(不知道)。更改了第一个问题以避免基于意见的答案。

标签: c# linq azure stackexchange.redis


【解决方案1】:

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

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

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

RedisCookbook 描述了很好的例子。

【讨论】:

    猜你喜欢
    • 2020-06-06
    • 1970-01-01
    • 1970-01-01
    • 2014-10-21
    • 2015-07-22
    • 2018-09-05
    • 2015-06-18
    • 2013-08-06
    • 1970-01-01
    相关资源
    最近更新 更多