Py学习  »  Redis

ServiceStack的RedisTypedClient

Tom 'Blue' Piddock • 4 年前 • 692 次点击  

RedisClient 具有 RedisTypedClient

var redisProjectClient = _redisClientsManager.GetClient().As<Project>()

然后,我们可以根据以下类型存储/检索相关实体 我们知道

var files = redisProjectClient.GetRelatedEntities<File>(projectId);

但是,我们希望管理来自外部服务(由HTTP API端点获取)的对象的简单JSON有效负载。这些有效负载对象将是我们在c中不知道的类型,但将提供我们希望能够用来管理关系的架构/类型名称,就像我们在redis类型的客户端中所做的那样。如果不手动管理使键入的客户端如此优秀的所有额外内容,我看不出这是否是当前可能的:

  • 该类型实体的Id列表
  • 检索/更新与对象相关的实体的能力
  • GetNextSequence 下一个Id

公寓里没有这些 IRedisClient 所以我想这样做:

var file = "{...}" // JSON object provided by external service

// We will know it's a "Project" type with a "projectID" from the JSON payload data:

var redisProjectClient = _redisClientsManager.GetClient().As("Project"); 
redisProjectClient.StoreRelatedEntities("File", projectId, file);


// ...

var files = redisProjectClient.GetRelatedEntities("File", projectId);

知道这是否可能,或者如何创建这种类型的客户机吗?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/56689
 
692 次点击  
文章 [ 1 ]  |  最新文章 4 年前
mythz
Reply   •   1 楼
mythz    4 年前

RedisTypedClient-可以使用字符串定义类型吗?

不,类型化客户机只处理类型,而不是未知的数据结构,您需要使用字符串存储任意JSON有效负载 IRedisClient

要维护这些关系,可以将它们存储在Redis集中 described in this previous answer 这就是 StoreRelatedEntities() StoreAll() 正常情况下,但也使用urn维护索引集中的相关实体(例如。 urn:File:x )作为存储每个实体的标识符。

GetRelatedEntities() 然后读取“关系集索引”中维护的所有id并使用 GetValues() 通过骨灰盒获取所有实体。