当前位置: 首页 > 面试题库 >

哪个键/值存储最有前途/最稳定?

阎功
2023-03-14
问题内容

我希望开始为某些辅助项目使用键/值存储(主要是作为学习经验),但是最近几年涌现了很多,所以我不知道从哪里开始。只是从内存中列出,我可以想到:

  1. CouchDB
  2. MongoDB
  3. 里亚克
  4. 雷迪斯
  5. 东京内阁
  6. 伯克利DB
  7. 卡桑德拉
  8. 内存缓存数据库

而且我敢肯定,在我的搜索工作中,还有更多的滑倒了。有了所有信息,很难在所有竞争对手之间找到可靠的比较。我的标准和问题是:

  1. (最重要)您推荐哪个 ? 为什么
  2. 哪一个最快?
  3. 哪一个最稳定?
  4. 哪个是最容易设置和安装的?
  5. 哪些具有针对Python和/或Ruby的绑定?

编辑:
到目前为止,Redis似乎是最好的解决方案,但这仅仅是因为我得到了一个肯定的答复(来自ardsrk)。我正在寻找像他这样的更多答案,因为它们将我引向了有用的,定量的信息。
使用哪个键值存储, 为什么

编辑2:
如果有人对CouchDB,Riak或MongoDB有经验,我很想听听您对他们的经验(如果您可以对其中的几种进行比较html" target="_blank">分析,则更是如此)


问题答案:

您推荐哪个?为什么?

我推荐Redis。为什么?继续阅读!!

哪一个最快?

我不能说这是最快的。但是Redis很快。它之所以快是因为它将所有数据保存在RAM中。最近,添加了虚拟内存功能,但所有键仍保留在主内存中,只有很少使用的值被交换到磁盘。

哪一个最稳定?

同样,由于我没有其他键值存储的直接经验,因此无法进行比较。但是,Redis已在GitHub和Instagram等许多Web应用程序的生产中使用。

哪个是最容易设置和安装的?

Redis相当容易设置。获取源代码并在Linux机器上运行make install。这将产生redis-server二进制文件,您可以将其放在路径上并启动它。

redis-server默认情况下绑定到端口6379。请redis.conf参阅源附带的更多配置和设置选项。

哪些具有针对Python和/或Ruby的绑定?

Redis具有出色的Ruby和Python支持。

针对Xorlev的以下评论:Memcached只是一个简单的键值存储。Redis支持复杂的数据类型,例如列表,集合和排序集合,同时为这些数据类型提供了简单的接口

还有一个问题是make 32bit,即使在64位计算机上,所有指针的大小也只有32位。这样可以在RAM少于4GB的计算机上节省大量内存。



 类似资料:
  • 问题内容: 在循环中声明变量是好的还是在Java中动态声明最佳。在循环中声明时是否还涉及性能成本? 例如。 选项1:循环外 选项2:循环内 问题答案: Robert C. Martin 在CleanCode中建议Java编码人员声明变量,使其尽可能接近使用它们的位置。变量的作用域不应超出必需的范围。使变量的声明靠近使用它的位置有助于提供读者类型和初始化信息。不要对性能太在意,因为JVM非常擅长优化

  • 问题内容: 我存储了1.11亿个键值对(一个键可以有多个值-最多2/3),它们的键是50位整数,值是32位(最大)整数。现在,我的要求是: 快速插入(键,值)对[允许重复] 基于键快速检索一个或多个值。 这里基于MultiMap给出了一个很好的解决方案。但是,我想在主内存中存储更多键/值对,而不会降低性能。我从网络文章中研究到B +树,R+树,B树,紧凑多图等可以是一个很好的解决方案。有谁能够帮我

  • 修改器和填充函数可以做的事,纯函数也可以做到。实际上有些所谓的函数式编程语言只支持纯函数。一些程序员认为,比起使用修改器来,使用纯函数开发程序更快且更不易出错。但是,有很多时候修改器是很方便的,也有很多情况下函数是程序效率是更低的。 总而言之,我推荐在能使用纯函数的时候尽量编写纯函数,在修改器有无法比拟的优势的情况下,再求助于修改器。此方法可称为函数式编程风格。

  • 问题内容: 请看以下示例: 首先,存放在哪里?是吗: 由编译器复制到引用它的内部类的隐藏成员变量中 复制到堆并在堆上引用 留在堆栈上并以某种方式引用 其他的东西 我的 猜测 是第一选择。 其次,要做到这样做所引起的任何性能问题(而不是简单地作为类的成员变量创建并按其引用),尤其是当您创建大量引用最终局部变量的内部类构造时。 问题答案: 是的,它们已被复制,这就是为什么您必须将变量声明为final的

  • 问题内容: 我需要一个用于Java的非常基本的键值存储。我从HashMap开始,但似乎HashMap的空间效率有些低下(我正在存储约2000万条记录,并且似乎需要约6GB RAM)。 映射为,因此我考虑使用GNU Trove ,并将映射值存储为ascii字节数组而不是String。 作为替代方案,是否存在仅需要添加jar文件,不立即将整个映射保存在RAM中并且仍然相当快的键值存储? 问题答案: 使

  • 更新时间:2019-07-18 09:59:25 节点简介 键值对存储节点封装了KV存储服务API,开发者可以通过该节点进行键值对形式的数据写入、获取、删除操作。 使用场景 如果您需要在您开发的服务中以键值对形式进行数据的写入、获取、删除操作,那么您就需要使用到键值对存储节点作为服务的中间逻辑节点。 配置项 1、键值对存储节点的默认节点名称为键值对存储,支持用户自定义节点名称 2、选择操作类型,有

  • 问题内容: 我真的很困惑查询需要返回在特定列上具有最大值的前N行。 例如,如果行具有相同的值。我必须返回还是要排。 问题答案: 如果您这样做: 您将获得前N行。 如果您这样做: 或者,您可以将其表达为: 从概念上讲,以下是您想要执行的操作,但在MySQL中可能不起作用:

  • 问题内容: 如何从表中选择前n个最大值? 对于这样的表: 对于n = 2,结果需要为: 下面的方法仅为每个组选择最大值。 返回值: 问题答案: 对于n = 2,您可以 对于任何n,您都可以使用此处介绍的方法模拟分区之上的排名。 编辑:其实这个文章会给你你需要什么。 基本上是这样的 用要分组的列的名称和保存值的列的名称替换。 要弄清楚它的功能是如何进行的,请从最内部的查询中逐步进行并运行它们。 而且