Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hash ServiceStack实体Id字段名_Hash_Redis_<img Src="//i.stack.imgur.com/WM7S8.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">servicestack - Fatal编程技术网 servicestack,Hash,Redis,servicestack" /> servicestack,Hash,Redis,servicestack" />

Hash ServiceStack实体Id字段名

Hash ServiceStack实体Id字段名,hash,redis,servicestack,Hash,Redis,servicestack,我使用ServiceStack,希望将对象作为哈希存储在Redis中,并通过ID访问它们的部分(字段),而不序列化整个对象,因此我有一个问题: 是否有一种方法可以使用“Id”之后的其他属性来标记Id字段?我 am使用命名约定,其中id字段的命名类似于“class 姓名+身份证”。因此,在用户类中, Itemclass、ItemId等等 是更新对象中更改的属性的方法 无需将整个对象序列化为哈希,也无需低级 使用Redis的hash命令进行操作?例如,通过使用 某种兰姆达斯 User=client

我使用ServiceStack,希望将对象作为哈希存储在Redis中,并通过ID访问它们的部分(字段),而不序列化整个对象,因此我有一个问题:

  • 是否有一种方法可以使用“Id”之后的其他属性来标记Id字段?我 am使用命名约定,其中id字段的命名类似于“class
    姓名+身份证”。因此,在用户类中,
    Itemclass、ItemId等等

  • 是更新对象中更改的属性的方法 无需将整个对象序列化为哈希,也无需低级 使用Redis的hash命令进行操作?例如,通过使用 某种兰姆达斯

  • User=client.GetById(userId);
    user.Name=“新名称”;
    更新(用户,u=>u.Name);
    
    是,您可以使用以下选项覆盖默认设置:

    ModelConfig.Id(x=>x.UserId);
    ModelConfig.Id(x=>x.ItemId);
    

    这需要在启动时配置一次,然后才能使用RedisClient。

    谢谢,黛米斯。以前没有见过这个函数。稍微正确地使用:ModelConfig.Id(x=>x.UserId);那么部分保存对象呢?我试着自己写,但被困在表达树里。问题是,如果我使用表达式树,我必须使用.Compile()方法,这会大大降低保存的执行速度。此外,我不想使用属性名称的神奇字符串来保存属性以进行散列…如果这回答了您最初的问题,请将其标记为已回答。如果你还有其他问题,你需要问一个新问题。明确你的要求,例如提供一个代码示例,如果它有助于描述你在寻找什么。第N1部分已经回答。第N2部分未获回答。代码示例见第N2部分。我想做的是:从redis散列中获取用户对象,更改“Name”属性,只将“Name”属性保存到散列中,而不序列化和保存整个用户对象。我可以通过手动将属性序列化为字符串并使用低级散列函数来实现这一点,但只需像我提供的代码那样看起来更普通、更明显。哈希API的存储类似于字符串字典。您可以分别使用每个属性部分更新散列内容,但不能使用阻塞对象的类型化API来更新散列内容。注意:我们没有在类型化客户端上添加部分更新API的计划。如果要扩展客户端以添加此功能,可以针对
    IRedisClient*
    接口添加自定义扩展方法。
    User user=client.GetById(userId);
    user.Name="New name";
    client.Update<User>(user,u=>u.Name);
    
    ModelConfig<User>.Id(x => x.UserId);
    ModelConfig<Item>.Id(x => x.ItemId);