首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Leveldb与Redis、Riak或东京暴君相比如何?

Leveldb与Redis、Riak或东京暴君相比如何?
EN

Stack Overflow用户
提问于 2011-05-24 02:38:33
回答 3查看 28.2K关注 0票数 48

Leveldb似乎是来自谷歌的一个新的有趣的持久键值存储。Leveldb与Redis、Riak或东京暴君有什么不同?在哪些特定用例中,一种比另一种更好?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-05-24 14:24:50

我发现我有点不同意colum的标准,尽管leveldb和Redis之间的差异是显而易见的。

你需要并发吗?我会选瑞迪斯。我这么说是因为Redis已经编写了处理它的代码。任何时候我都可以使用别人写得很好的代码来处理并发,那就更好了。我不是简单地说多线程应用程序,而是在其中包含多进程的概念-无论它们是否在同一系统上。即使这样,在我看来,不需要在多线程应用程序中编写和调试锁定也是一个很大的优势。

你想让它在应用程序中完全独立吗?使用leveldb,因为它是一个库。是否需要或想要的不仅仅是k/v?和Redis一起去。

我只是在评论leveldb或Redis方面,因为我认为自己在Riak或TT方面还不够流利,无法评论他们更好的西装。

简而言之,如果你正在寻找的是在单线程应用中持久化的键值存储,那么leveldb是你列表中的一个选择(另一个选择是东京机柜或者good ole,BerkleyDB,甚至是sqlite)。但如果你想要更多,那就选择其他的吧。

编辑:更新说明wrt。并发性

票数 31
EN

Stack Overflow用户

发布于 2011-11-07 22:52:48

我之所以添加这一点,是因为在前面的两个答案中,我没有看到这个(重要的)区别……

  • Redis:是一个数据库服务器。您可以通过自定义的二进制协议(通过客户端库typically).
  • LevelDB:实现键值存储)与其通信。您可以通过调用C++ API directly.

与其进行通信

如果你熟悉SQLite,以及它作为客户端应用程序的嵌入式DB的流行程度(我相信Android和iOS都提供了它),那么你就会看到像LevelDB这样的东西适合在哪里。

想象一下,你正在编写一个复杂的PIM应用程序,也许某个企业地址簿管理器打算安装在办公室的个人计算机上。您不希望将自己在应用程序中编写/解析的所有数据都存储在XML或JSON中--如果可以,您更愿意将其存储在DB中,以获得更容易的访问模式。

但你也不希望不得不发布和安装Redis的本地副本,在某个随机端口上运行,这样你就可以连接到它了……你想要一个可以直接从你的应用程序本地调用的数据库,而不用担心“通过网络”的通信……你想要一个数据库的原始内脏,而不是任何你在客户端应用程序中不需要的网络相关的东西。

这就是LevelDB所处的位置。

对于不同的工作,它是一个不同的工具。

票数 48
EN

Stack Overflow用户

发布于 2011-05-24 06:28:33

差异:

  • Redis是一个服务器,而Leveldb是“一个实现快速持久键值存储的库”。因此,使用Redis时,您必须轮询服务器。使用Leveldb,数据库存储在磁盘上,这使得它比Redis慢得多,Redis存储在memory.
  • Leveldb中,只提供密钥/存储。Redis也有这个功能,但也有更多的功能和特性

相似性:

  • 它们都有的密钥/存储方法

选择一个而不是另一个的理由

如果你正在开发一个C/C++应用,如果你只需要一个不像mysql那样占用大量资源的数据库,那么leveldb就是不错的选择。Leveldb提供代码级访问,而对于redis,您需要一个必须与服务器通信的接口。在任何其他应用程序中,Redis都是不错的选择。你不仅可以得到一个实际的服务器,一个以上的应用程序可以访问,你还可以获得其他功能,如写到磁盘,集,列表,散列,等等。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6101402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档