我需要为基于树的键值开发一个缓存系统(非常类似于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可以处理这种缓存吗?如果没有,还有另一种选择吗?
答案 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数据结构