aschoolboy
V2EX  ›  程序员

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

By aschoolboy at 2019 年 3 月 10 日 · 3031 次点击

公司想把文件内容按目录结构存在 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 这么牛逼的东西,居然是这样的,不由得开始怀疑自己,特此发帖求助

5 条回复  •  2019-03-11 13:38:34 +08:00
reus
   1
reus  
   2019 年 3 月 11 日
你 high 逼你自己写一个啊
mason961125
   2
mason961125  
   2019 年 3 月 11 日 via iPhone
不都给你用 prefix 解决了嘛,还要什么自行车。
catror
   3
catror  
   2019 年 3 月 11 日 via Android
树状结构的键是个啥?描述一下?我想你可能没太理解你键值对存储
hopingtop
   4
hopingtop  
   2019 年 3 月 11 日
一上来就 pen lowB 不是不符合你意就是 lowB!
多了解后再来 pen

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

我的确没太理解键值对存储。
希望不吝赐教,或者给个关键字,我去查一下
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
© 2026 V2EX · 32ms · 3.9.8.5