raf*_*ude 44 nosql tokyo-tyrant redis riak leveldb
Leveldb似乎是Google新推出的一款有趣的持久关键价值商店.Leveldb与Redis,Riak或Tokyo Tyrant有何不同?在哪些具体用例中哪一个比另一个好?
Riy*_*lla 43
我只是添加了这个,因为在之前的两个答案中我都没有看到这个(重要的)区别......
如果您熟悉SQLite以及它作为客户端应用程序的嵌入式数据库的流行程度(我相信Android和iOS都可以发布它),那么您可以看到LevelDB适合的地方.
想象一下,您正在编写一个复杂的PIM应用程序,也许某些企业通讯簿管理器意味着要安装在办公室的个人计算机上.您不希望将您在应用程序中自己编写/解析的所有数据存储在XML或JSON中 - 如果可以的话,您更愿意将其存储在数据库中以便更轻松地访问模式.
但你也不想发布和安装Redis的本地副本,在一些随机端口上运行只是为了你可以连接到它...你想要一个你可以直接从你的应用程序本地调用的数据库而不是担心"过线"通信...你想要一个数据库的原始内容,而不需要在客户端应用程序中不需要的任何网络内容.
这是LevelDB所在的位置.
对于不同的工作,它是一个不同的工具.
The*_*ill 29
我发现我对colum的标准略有不同意见,尽管他指出的leveldb和Redis之间的区别是现实的.
你需要并发吗?我会和Redis一起去.我这样说是因为Redis已经编写了代码来处理它.任何时候我都可以使用写得很好的其他人的代码来处理并发性,那就更好了.我不仅仅意味着多线程应用程序,而是包含多个进程的概念 - 无论是否在同一系统上.即使这样,在多线程应用程序中不需要编写和调试锁定在我眼中也有很大的优势.
你想在应用程序中完全独立吗?和leveldb一起去,因为它是一个图书馆.是否需要或不仅仅需要ak/v?和Redis一起去吧.
我只是评论leveldb或Redis方面,因为我认为自己在Riak或TT中不够流利,不能评论他们更好的诉讼.
简而言之,如果您正在寻找的是单线程应用程序中的持久键值存储,那么leveldb可以在您的列表中进行选择(另一个是东京内阁或好的BerkleyDB甚至是sqlite).但如果您想要更多,请选择其中一个.
[编辑:更新说明wrt.并发]
Col*_*lum 11
区别:
相似点:
选择一个而不是另一个的原因
如果你正在制作一个C/C++应用程序,那么leveldb就是你要走的路,只要你需要一个不像mysql那样资源丰富的数据库.Leveldb提供代码级访问,而使用redis,您需要一个必须与服务器通信的接口.在任何其他应用程序中,Redis是最佳选择.您不仅可以获得多个应用程序可以访问的实际服务器,而且还可以获得其他功能,例如写入磁盘,设置,列表,哈希等等.