我们正在实施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缓存中生成了超时。这种方法是建议的吗?或者最好将每个产品存储在单独的密钥中?答案 0 :(得分:1)
我想知道你一次拨打大量记录的方法。我建议将它们分成不超过一千条记录。
Redis仅具有非常有限的功能,因此您的要求可能无法满足。 Redis适用于缓存或简单的键值getter和setter。为此,您可以考虑使用其他基于内存的数据库,例如MongoDB。
在您的情况下,Redis 设置是组合或减少给定条件的最佳方法,或哈希用于基于属性的对象存储。无论选择何种方法,您都将使用两种或更多数据类型,因为Redis数据类型不是那么通用。
RedisCookbook描述了很好的例子。