这是Pluralsight Azure scalability class.
的代码段我想为Redis缓存中存储的内容(以及不应该存在的内容)定义一个策略。缓存策略的一些抽象示例是
我应该采取什么方法来清晰地定义可以在全球范围内实施并定期更新的政策?
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();
}
答案 0 :(得分:0)
当需要为规则,验证和选择标准建模时,请使用规范模式。
在您的要求中似乎就是这种情况,因此请在Specification
模式上查看Martin Fowler's paper。当它与Composite
模式结合使用时,它会变得非常强大,以创建一个流畅的API来描述各种规则。