【问题标题】:How to use ServiceStack Redis API?如何使用 ServiceStack Redis API?
【发布时间】:2015-01-29 10:40:29
【问题描述】:

我是服务堆栈 redis api 的新手。所以我在使用服务堆栈redis api时有点困惑。我想知道 IRedisTypedClient""?
1) "" 代表什么?
2) 我们可以在“”中传递哪些参数?

【问题讨论】:

    标签: c# api redis servicestack servicestack.redis


    【解决方案1】:

    IRedisTypeClient 接口提供了 Redis 客户端 API 的类型化版本,其中所有 API 都接受类型化的 POCOs(即普通旧 CSharp 对象)作为其值主体,而 IRedisClient 仅接受原始的字符串。在幕后,Typed API 只是将 POCO 序列化为 JSON 字符串,但它的 typed API 在处理丰富的复杂类型时提供了更好的 API。

    创建IRedisTypeClient<T>的API是使用IRedisClient.As<T> API,例如:

    public class Todo
    {
        public long Id { get; set; }
        public string Content { get; set; }
        public int Order { get; set; }
        public bool Done { get; set; }
    }
    
    IRedisClient redis = redisManager.GetClient();
    var redisTodos = redis.As<Todo>(); 
    

    如上所示,您可以从任何用户定义的 POCO 创建类型化 API,它现在提供 API,让您可以直接使用原生 Todo 类型,例如:

    var todo = new Todo
    {
        Id = redisTodos.GetNextSequence(),
        Content = "Learn Redis",
        Order = 1,
    };
    
    redisTodos.Store(todo);
    
    Todo savedTodo = redisTodos.GetById(todo.Id);
    savedTodo.Done = true;
    redisTodos.Store(savedTodo);
    
    "Updated Todo:".Print();
    redisTodos.GetAll().ToList().PrintDump();
    

    有一个 stand-alone version of this example 以及一个使用 RedisClient 类型 API 的 Backbones TODO app with a Redis backend 的现场演示。

    【讨论】:

    • 我正在使用 Visual Studio 2010 .NET Framework 4.0。我已经包含了 NuGet 的 servicestack API。在这种环境下,POCO 仍然被序列化为 JSON 字符串或其他任何东西?
    • @Immanuel POCO 总是在幕后序列化为 JSON,但这只是一个您不必担心的 impl 细节。
    • 在我们使用stackservice redis的任何平台上poco总是会序列化为JSON吗?
    • @Immanuel 是的,平台之间没有任何差异。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-08
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 2012-11-11
    相关资源
    最近更新 更多