etcd 的键是单纯的字符串吗?没有目录结构?

2019-03-10 23:44:12 +08:00
 aschoolboy

公司想把文件内容按目录结构存在 etcd 里
例如:
文件目录是
/root
--/linux
----/a
----/b
--/windows
----/c
----/d
那么存的键就是:
/root/linux/a
/root/linux/b
/root/windows/c
/root/windows/d
想要查看 a 的文件内容,就取"/root/linux/a"这个键对应的值
还有个需求就是获取文件与文件夹列表的功能
即:输入 /root,获得[]string{"linux","windows"}
输入 /root/linux,获得[]string{"a","b"}
但是我发现,etcd 的键就是单纯的字符串,并不是树状结果
上述需求可以通过加参数 --prefix
来获得前缀为 /root 的键值对列表,并对列表中的键做字符串处理,来完成
但是这简直太 lowB 了
我看了 github.com/coreos/etcd 包的源码,的确是单纯的字符串,但是 etcd 这么牛逼的东西,居然是这样的,不由得开始怀疑自己,特此发帖求助

2410 次点击
所在节点    程序员
5 条回复
reus
2019-03-11 00:00:31 +08:00
你 high 逼你自己写一个啊
mason961125
2019-03-11 00:55:05 +08:00
不都给你用 prefix 解决了嘛,还要什么自行车。
catror
2019-03-11 01:46:05 +08:00
树状结构的键是个啥?描述一下?我想你可能没太理解你键值对存储
hopingtop
2019-03-11 09:26:17 +08:00
一上来就 pen lowB 不是不符合你意就是 lowB!
多了解后再来 pen

etcd 底层存储采用 bblot db ( blot fork )存储采用 B+ tree
aschoolboy
2019-03-11 13:38:34 +08:00
@reus #1
@hopingtop #4
我的意思是我自己的做法 lowB
@catror #3
如果把"value"这个字符串存到"/root/linux/a"里
我目前知道的 etcd 是这么存储的{"/root/linux/a":"value"}
但是我希望得到这样存储的结构{"/root":{"/linux":{"/a":"value"}}}

我的确没太理解键值对存储。
希望不吝赐教,或者给个关键字,我去查一下

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/543137

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX