所以我在我的c#webapi中使用redis缓存,并且能够实现类似的层次结构会让我的生活更轻松(像这样:
a-> key1
b-> c ->key2
key3
d ->...
)
我的另一个选择是使用键制作一个类似于树的方法,其中一个会给我另外两个键,一个用于键,另一个用于b,所以一个(但会是一团糟)
答案 0 :(得分:2)
Redis支持多种数据类型。对于您的情况,您可以使用Hashes
,因为哈希可以在其中包含另一个嵌套哈希。
由于Redis不支持嵌套数据结构,因此您可以通过在外部哈希中存储内部哈希引用来存储它,这将在检索数据时遇到困难。否则,您可以将层次结构对象结构创建为JSON(或者,如果您已有),并将该序列化对象存储在Redis中。
答案 1 :(得分:2)
您在这里尝试做的事情有点超出了想要你要做的事情。您可以使用键内的嵌套键伪造(可能通过哈希),但很难与一起使用。
然而!这可能非常适合redis"模块" (需要redis 4. *)。特别是,我想知道ReJSON是否合适。这是用于JSON使用的设计,但坦率地说:JSON是一种分层嵌套键/值数据类型 - 正是您想要的。只需忽略JSON部分:)
特别是,ReJSON允许您通过在您使用过XPath时熟悉的语法来查询,访问和操作任意节点。
如何访问ReJSON将取决于您使用的客户端库。如果你正在使用SE.Redis,你可能会想要使用db.Execute(command, args)
方法(因为我没有本机暴露的ReJSON绑定)。如果您正在使用"群集"拓扑,确保键作为RedisKey
(而不是string
)传递,以便它知道如何路由它。
答案 2 :(得分:1)
如果您使用redis命令查看缓存,则可以使用用冒号分隔的键,例如set1:subset:subset:key。它不是真正的层次结构,但在命令视图中显示为文件夹。