servicestack,C#,Model View Controller,Redis,servicestack" /> servicestack,C#,Model View Controller,Redis,servicestack" />

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条
使用Redis实现这一目标的最佳方式是什么


谢谢,您可以通过在按日期排序的已排序列表中维护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();