【发布时间】:2020-02-15 15:02:57
【问题描述】:
我们正在考虑使用托管在 Azure 中的 Redis。使用 StackExchange nuget,我们的第一个用例是搜索我们的客户群。这最初是大约 10,000 名客户,但会随着时间的推移而增长。
客户将是一个特定的搜索模型,如下所示:
{
"Id": 123,
"Name": "Bob Smith",
"Age": 72,
"Postcode": "AB123EF",
"Email": "bobsmith@anon.com",
"Telephones": [
"07710123456",
"01453123456"
]
}
我的理解是你应该避免将大的 blob 对象输入到 Redis 中,因此将列表存储为一个对象并不是一个好主意。因此,我们使用 List* 函数将每个项目存储在一个键下并序列化数据。
最初的工作看起来像这样:
var tasks = new List<Task>();
foreach (var customer in customers)
{
tasks.Add(db.ListLeftPushAsync(_key, JsonConvert.SerializeObject(customer)));
}
await Task.WhenAll(tasks).ConfigureAwait(true);
这一切都如我们预期的那样工作,我确信有一些优化,但看起来还可以。
这基本上给我们留下了查询信息的问题。我知道 Redis 将所有内容都存储为字符串,但我不明白如何搜索列表,因为它是 Redis 对象而不是字符串。所以我们不能使用ListRange(_key).Where(c => c.Contains("Bob")) 为例。
如果我们的方法在这方面有误,或者我只是缺少某种方法,请告诉我。
【问题讨论】:
-
您考虑过使用 RediSearch 吗?
标签: azure redis stackexchange.redis azure-redis-cache