当前位置: 首页 > 面试题库 >

Redis中嵌套结构的替代方案?

李谦
2023-03-14
问题内容

我经常遇到这样的情况:我要存储的信息比Redis任何简单数据结构所能容纳的信息都要复杂。我仍然想使用Redis,但是我想知道人们在理想情况下是否希望使用嵌套结构使用任何标准替代方案?


问题答案:

您基本上有两种策略:

  • 您可以序列化复杂对象并将其存储为字符串。我们建议使用json或msgpack作为序列化格式。这很容易从大多数客户端语言进行操作。如果需要服务器端访问,则服务器端的Lua脚本可以轻松地对此类对象进行编码/解码,因为Redis是使用针对Lua的msgpack和json支持进行编译的。

  • 您可以将对象拆分为不同的键。除了存储user:id和该ID的复杂数据结构之外,您还可以存储几个键,例如user:id,user:id:address_list,user:id:document_lists等…如果您需要原子性,则对MULTI / EXEC块可用于保证数据一致性并汇总往返次数。

查看此答案中的一个简单示例:

LPUSH命令将对从JSON初始化的记录起作用吗?

最后,Redis不是面向文档的数据库。如果您确实有很多复杂的文档,那么MongoDB,ArangoDB,CouchDB,Couchbase等解决方案可能会更好地为您提供服务…



 类似资料:
  • 问题内容: 因此,我今天编写了一种方法,该方法结合了嵌套开关语句的使用,并且代码对我来说看起来很简洁明了,但是有人告诉我,嵌套开关语句通常不是最好的处理方法,因为它们可能会使更多的语句变得混乱。切换添加的语句。这是我的代码的示例: 因此,我的问题是,从本质上讲,什么是这些switch语句的合适替代方案? 问题答案: 我建议您用对过程的调用替换每个嵌套的switch语句,然后该过程将执行嵌套的swi

  • 问题内容: 我已经开始使用https://mholt.github.io/json-to-go/将API JSON转换为go结构,但我真的很喜欢它,但是我仍然坚持如何在Report Definition结构中初始化Filters数组结构如下所示。 我似乎无法引用在Filters结构甚至是Filters结构中声明的项,以创建新的Filter项目并将其附加到Filters。 是否可以使用原样编写的Re

  • 本文向大家介绍C++ 嵌套类/结构,包括了C++ 嵌套类/结构的使用技巧和注意事项,需要的朋友参考一下 示例 甲class或struct还可以包含另一个class/struct内部本身的定义,这被称为“嵌套类”; 在这种情况下,包含类称为“封闭类”。嵌套类定义被认为是封闭类的成员,但在其他方面则是单独的。 从封闭类的外部,可以使用范围运算符访问嵌套类。但是,在封闭类的内部,可以使用没有限定符的嵌套

  • 4. 嵌套结构体 结构体也是一种递归定义:结构体的成员具有某种数据类型,而结构体本身也是一种数据类型。换句话说,结构体的成员可以是另一个结构体,即结构体可以嵌套定义。例如我们在复数的基础上定义复平面上的线段: struct segment { struct complex_struct start; struct complex_struct end; }; 从第 1 节 “复合类型与结构体”

  • 我有以下片段,我想知道是否可以用Java-Streams/Java8 API替换它,以及如何替换它

  • 问题内容: 我有一个嵌套的结构。这些是由json解组器构造的。 但是,此结构中的某些字段是’omitifempty’的,因此我以一个可以在各个位置包含nill的结构结束op。 示例(真正的东西嵌套得更深,很大:400行结构): 问题是,是否存在一种更通用的方法来测试参考树中的某个节点是否为nil?我需要获得很多不同的项目,而编写所有这些if语句将很痛苦。哦,速度值得关注。 问题答案: 一种优雅的处