使用redis进行树数据结构

时间:2018-04-23 06:43:26

标签: caching redis tree registry trie

我需要为基于树的键值开发一个缓存系统(非常类似于Windows注册表编辑器)。

在缓存键中是字符串,它表示树中路径的值,可以是原始类型(int,string,bool,double等)或者是自己的子树。

例如:

key = root\x\y\z\w , value = the whole subtree under w

key = root\x\y\z\w\t , value = integer 

我想过将Redis用作简单的缓存实现,但是天真的键值将忽略树层次结构的点。

另外,以这种天真的方式,猜测我已经在缓存中

key = root\x\y, value = the whole subtree under y

我正在寻找

key = root\x\y\z

天真的键值虽然已经存在于缓存中,但仍未找到它。

我能想到的最好的数据结构是前缀树(Trie),它可以更有效地处理密钥,并且可以很容易地找到子串的情况,如上所述。

我找不到任何可以处理此数据strcutre的Redis的实现。

Redis可以处理这种缓存吗?如果没有,还有另一种选择吗?

2 个答案:

答案 0 :(得分:0)

Redis还没有做树(还)。如果您必须在Redis中存储树状结构,我建议您查看http://rejson.io

或者,您可以开发一个可以执行任何需要的Redis模块。

免责声明:我是ReJSON的作者之一。

xref:https://groups.google.com/d/msg/redis-db/ROSocq9sQ34/NmxeF0QFAQAJ

答案 1 :(得分:0)

试试这个 redis tree module。在redis中提供原生的polytree数据结构