我希望开始为某些辅助项目使用键/值存储(主要是作为学习经验),但是最近几年涌现了很多,所以我不知道从哪里开始。只是从内存中列出,我可以想到:
而且我敢肯定,在我的搜索工作中,还有更多的滑倒了。有了所有信息,很难在所有竞争对手之间找到可靠的比较。我的标准和问题是:
编辑:
到目前为止,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的计算机上节省大量内存。
问题内容: 我存储了1.11亿个键值对(一个键可以有多个值-最多2/3),它们的键是50位整数,值是32位(最大)整数。现在,我的要求是: 快速插入(键,值)对[允许重复] 基于键快速检索一个或多个值。 这里基于MultiMap给出了一个很好的解决方案。但是,我想在主内存中存储更多键/值对,而不会降低性能。我从网络文章中研究到B +树,R+树,B树,紧凑多图等可以是一个很好的解决方案。有谁能够帮我
问题内容: 在循环中声明变量是好的还是在Java中动态声明最佳。在循环中声明时是否还涉及性能成本? 例如。 选项1:循环外 选项2:循环内 问题答案: Robert C. Martin 在CleanCode中建议Java编码人员声明变量,使其尽可能接近使用它们的位置。变量的作用域不应超出必需的范围。使变量的声明靠近使用它的位置有助于提供读者类型和初始化信息。不要对性能太在意,因为JVM非常擅长优化
修改器和填充函数可以做的事,纯函数也可以做到。实际上有些所谓的函数式编程语言只支持纯函数。一些程序员认为,比起使用修改器来,使用纯函数开发程序更快且更不易出错。但是,有很多时候修改器是很方便的,也有很多情况下函数是程序效率是更低的。 总而言之,我推荐在能使用纯函数的时候尽量编写纯函数,在修改器有无法比拟的优势的情况下,再求助于修改器。此方法可称为函数式编程风格。
问题内容: 请看以下示例: 首先,存放在哪里?是吗: 由编译器复制到引用它的内部类的隐藏成员变量中 复制到堆并在堆上引用 留在堆栈上并以某种方式引用 其他的东西 我的 猜测 是第一选择。 其次,要做到这样做所引起的任何性能问题(而不是简单地作为类的成员变量创建并按其引用),尤其是当您创建大量引用最终局部变量的内部类构造时。 问题答案: 是的,它们已被复制,这就是为什么您必须将变量声明为final的
问题内容: 我需要一个用于Java的非常基本的键值存储。我从HashMap开始,但似乎HashMap的空间效率有些低下(我正在存储约2000万条记录,并且似乎需要约6GB RAM)。 映射为,因此我考虑使用GNU Trove ,并将映射值存储为ascii字节数组而不是String。 作为替代方案,是否存在仅需要添加jar文件,不立即将整个映射保存在RAM中并且仍然相当快的键值存储? 问题答案: 使
更新时间:2019-07-18 09:59:25 节点简介 键值对存储节点封装了KV存储服务API,开发者可以通过该节点进行键值对形式的数据写入、获取、删除操作。 使用场景 如果您需要在您开发的服务中以键值对形式进行数据的写入、获取、删除操作,那么您就需要使用到键值对存储节点作为服务的中间逻辑节点。 配置项 1、键值对存储节点的默认节点名称为键值对存储,支持用户自定义节点名称 2、选择操作类型,有
我为一个产品添加了一个产品属性键和值。 我想通过这个属性查询产品。我有一个查询(这里不相关),但它没有返回任何东西。于是我弹出打开PHPMyAdmin,开始搜索我的本地数据库从头开始。 我在任何地方都找不到我的新属性。 所以: 通过站点的本地主机版本的管理员设置。检查了DB连接,指向的是本地MySQL实例。保存属性,点击产品上的更新,离开产品页面并返回以确保属性确实在产品上并保存。 数据库里什么都
问题内容: 我真的很困惑查询需要返回在特定列上具有最大值的前N行。 例如,如果行具有相同的值。我必须返回还是要排。 问题答案: 如果您这样做: 您将获得前N行。 如果您这样做: 或者,您可以将其表达为: 从概念上讲,以下是您想要执行的操作,但在MySQL中可能不起作用: