如何使用 servicestack 类型的客户端?

Posted

技术标签:

【中文标题】如何使用 servicestack 类型的客户端?【英文标题】:How to use servicestack typed client? 【发布时间】:2015-11-28 17:44:46 【问题描述】:

基本上我们有一个 redis 实例,我们想保存和获取 Redis 列表中的所有项目。

我们可以保存它但是当我们试图获取列表时

var redis = redisclient.As<MyModel>();
string key = "myredislistkey";
List<MyModel> mylist = redis.GetAllItemsFromList(key);

我知道这是错误的,但为什么呢?以及如何使用 Redis 键(或所谓的 listid)正确使用 Typed 客户端到 Getallitems?

官方用法是

List<T> GetAllItemsFromList(IRedisList<T> fromList);

但如果我已经拥有 fromList,我为什么还要尝试获取它?

【问题讨论】:

【参考方案1】:

您可以通过以下方式获得对类型列表(即IRedisList&lt;T&gt;)的引用:

var redisModels = redisClient.As<MyModel>().List["myredislistkey"];

IRedisList&lt;T&gt; 只是一个通过远程 redis LIST 实现 .NET IList&lt;T&gt; 接口的适配器,即它本身不包含任何元素,您可以使用它与此列表交互,例如:

向其中添加项目:

redisModels.Add(new MyModel  ... );
redisModels.AddRange(new[]  new MyModel  ... , new MyModel  ...  );

并获取所有元素:

var allModels = redisModels.GetAll();

【讨论】:

谢谢!这正是我所希望的。顺便说一句,如果你能给我一个类型化 redis 客户端和普通 redis 客户端的文档站点链接,我可以在将来引用它们。现在我能找到的只有这个github.com/ServiceStack/ServiceStack.Redis/wiki/… @shawhu 文档有点分散,它们最初位于 docs.servicestack.net,但其中很多位于 *** 上。尽管from this release 我们已经开始向项目 repo 添加更多文档,我们将继续添加这些文档。如果您遇到阻碍,请随时在此处继续提问。 那么,我将不得不在这里寻求更多帮助。谢谢!! 谢谢,这对我有帮助。一件事:我认为应该是redisClient.As&lt;MyModel&gt;().Lists["myredislistkey"]; 而不是redisClient.As&lt;MyModel&gt;().List["myredislistkey"];,缺少一个's'...

以上是关于如何使用 servicestack 类型的客户端?的主要内容,如果未能解决你的问题,请参考以下文章

ServiceStack:添加 Blazor 支持?

使用 ServiceStack 使用 REST Web 服务时的用户身份验证

如何让 ServiceStack 序列化/反序列化具有正确类型的 expando 对象

Redis - 学习

redis 专题 存储

在 ServiceStack 中,我如何使用外部发布的 JWT