100w 条只读 kv 数据想在 node 里查询,有什么最简便的方法吗?

2019-09-15 09:06:36 +08:00
 love
level 的 kv 数据库非多进程,所以没法用,第二个进程会出错。
sqlite 有点杀鸡用牛刀了,我只是一个查一个 kv。
做成 json 文件加载到内存,简单是简单了,不过多进程 node 用太伤内存了。

有纯 js 的最简单的多进程可以用只读文件 kv 数据库吗?
5651 次点击
所在节点    Node.js
13 条回复
zy445566
2019-09-15 09:11:14 +08:00
leveldb 用单进程 node 封装成一个服务,然后你多进程的 node 去调用不就好了。
zy445566
2019-09-15 09:15:21 +08:00
这样不仅仅支持多进程的 node 可能在一台机器上调用,就算你是多机器。也可以调用到这个 leveldb 的服务。后续如果做到要搞多机 leveldb 服务,到时候做个同步简单一点。
zy445566
2019-09-15 09:20:27 +08:00
几年前我还做过一个 leveldb 的服务,可以给你参考下,理论上可以支持多语言和多机同步。不过毕竟是几年前写的,可能也比较青涩,线上最好别使用,但参考实现应该没问题。https://github.com/zy445566/vertical
iPhoneXI
2019-09-15 10:19:21 +08:00
redis 不行吗
love
2019-09-15 11:20:58 +08:00
@iPhoneXI redis 还不如直接 json 读到内存简单呢,一个性质
love
2019-09-15 11:23:07 +08:00
@zy445566 我是想找个简单的办法呢,不需要太多功能,只是当个只读字典用,实在不行 sqlite 也比搞成分布的简单
podel
2019-09-15 11:26:32 +08:00
@love redis 不需要你去解决多进程问题啊。
love
2019-09-15 11:37:53 +08:00
@podel 嗯对。我忘说了一点,我也不想全加载到内存,即使只在 redis 加载一份,因为小鸡只有 1G 内存不想白浪费 200M 内存。
love
2019-09-15 11:41:01 +08:00
当然还有个办法是直接存成无数小文件,简单,但似乎太浪费 inode 了,小鸡整个盘总共才 100 多 w inode
xcstream
2019-09-21 14:03:06 +08:00
机器配置只有 1G 为何要多进程呢
love
2019-09-21 14:47:42 +08:00
@xcstream 有二个核不用白不用,毕竟 Node 是单线程的
love
2019-09-21 14:48:21 +08:00
最终还是用 sqlite 了,也不太麻烦
xcstream
2019-12-26 13:18:57 +08:00
redis 不行吗

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

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

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

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

© 2021 V2EX