【发布时间】:2016-12-11 22:44:54
【问题描述】:
这是来自Pluralsight Azure scalability class.的代码sn-p
我想为 Redis 缓存中应该(和不应该)存储的内容定义一个策略。缓存策略的一些抽象示例是
- 约会之后
- 日期 X 和 Y 之间
- 门票人气
- 机器学习 ...
我应该采取什么方法来清晰地定义可以在全球范围内实施并定期更新的政策?
CloudContext.cs
public async Task<List<Event>> GetLiveEvents(DateTime currentDate)
{
string year = currentDate.Year.ToString();
var key = GenerateLiveEventsKey(year);
var yearEvents = await cache.GetFromCacheAsync<List<Event>>(key, async () =>
{
List<Event> events = new List<Event>();
string partitionKey = year;
TableQuery<EventRead> query = new TableQuery<EventRead>().Where(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, partitionKey));
var result = tableEvents.ExecuteQuery(query);
foreach (EventRead nosqlEvent in result)
{
var eventObj = nosqlEvent.ToEvent(false);
events.Add(eventObj);
}
return events;
});
return yearEvents.Where(e => e.EventDate >= currentDate).ToList();
}
【问题讨论】:
标签: azure caching architecture redis domain-driven-design