C# ServiceStack Redis按日期列出的最新列表
如果我有课C# ServiceStack Redis按日期列出的最新列表,c#,model-view-controller,redis,
servicestack,C#,Model View Controller,Redis,
servicestack,如果我有课 public class Article { public int Id { get; set; } public string Title { get; set; } public string ShortDesc { get; set; } public DataTime UpateDate { get; set; } } 基于UpdateDate从Redis缓存获取用户列表的最佳方法是什么 我在Redis上看到了很多关于最新列表的例子,但他们都
public class Article
{
public int Id { get; set; }
public string Title { get; set; }
public string ShortDesc { get; set; }
public DataTime UpateDate { get; set; }
}
基于UpdateDate从Redis缓存获取用户列表的最佳方法是什么
我在Redis上看到了很多关于最新列表的例子,但他们都认为添加到列表中的最新元素是最新的,而且很容易得到最近条目的列表
但在我的情况下,我需要有一个名单或最近更新的文章根据更新日期,例如
记者在清晨添加了一篇文章(Id 1)和今天的日期,然后意识到他错过了昨天的一条新闻(Id 2),该新闻需要在网站上注明日期。之后,他添加了一篇新文章,文章的日期是今天(Id 3)
因此,我的提要应该列出:
- 第3条
- 第1条
- 第2条
谢谢,您可以通过在按日期排序的已排序列表中维护ID索引来实现这一点 例如,我们将存储具有不同修改日期的文章列表,例如:
var articles = new[]
{
new Article { Id = 1, Title = "Article 1", ModifiedDate = new DateTime(2015, 01, 02) },
new Article { Id = 2, Title = "Article 2", ModifiedDate = new DateTime(2015, 01, 01) },
new Article { Id = 3, Title = "Article 3", ModifiedDate = new DateTime(2015, 01, 03) },
};
我们可以将所有文章POCO存储在redis中,方法是使用类型化的redis客户端进行存储,例如:
var redisArticles = Redis.As<Article>();
redisArticles.StoreAll(articles);
现在,要按修改日期获取列表文章,我们可以按日期值降序(即按最新日期)获取所有文章ID:
打印ID转储:
articleIds.PrintDump();
[
3,
1,
2
]
然后,您可以通过返回的ID获取所有文章:
var latestArticles = redisArticles.GetByIds(articleIds);
latestArticles.PrintDump();
谢谢,我将尝试这个解决方案。为了确认这个命令,rediscles.GetByIds(articleIds)将按照articleIds中id的顺序返回文章
articleIds.PrintDump();
[
3,
1,
2
]
var latestArticles = redisArticles.GetByIds(articleIds);
latestArticles.PrintDump();