你可以在redis中存储的最大值是多少?
Posted
技术标签:
【中文标题】你可以在redis中存储的最大值是多少?【英文标题】:What is the maximum value size you can store in redis? 【发布时间】:2011-08-02 03:25:48 【问题描述】:有谁知道你可以在redis中存储的最大值大小是多少?我想使用 redis 作为带有 celery 的消息队列来存储一些需要由另一个服务器上的工作人员处理的小文档,并且我想确保文档不会太大。
我发现一个页面引用了 1GB,但是当我点击页面上的链接以了解他们得到答案的位置时,该链接不再有效。这是链接:
http://news.ycombinator.com/item?id=1182005
【问题讨论】:
【参考方案1】:所有字符串值都限制为 512 MiB。这可能是您最关心的大小限制。
编辑:因为 Redis 中的键是字符串,所以最大键大小为 512 MiB。最大键数为2^32 - 1
= 4,294,967,295。
另一方面,值的大小可能因类型而异。对于聚合数据类型(即散列、列表、集合和排序集),每个元素的最大值大小为 512 MiB,尽管数据结构本身最多可以有2^32 - 1
个元素。
https://redis.io/topics/data-types
https://redis.io/topics/faq#what-is-the-maximum-number-of-keys-a-single-redis-instance-can-hold-and-what-is-the-max-number-of-elements-in-a-hash-list-set-sorted-set
http://groups.google.com/group/redis-db/browse_thread/thread/1c7e33fbc98734b3?fwc=2
【讨论】:
所以,换句话说,你应该没问题。如果您需要存储大于 512 MiB 的字符串,您可能应该使用硬盘,而不是 redis。 我要删除这个线程,因为我今天通过 Google 搜索找到了它。在您引用的 google 小组讨论中,Salvatore Sanfilippo 本人表示最大密钥大小为 512MB。那里的键是字符串,所以这种一致性是有道理的。允许 2 GiB 密钥大小并在字符串上设置 512MiB 大小限制是没有意义的。对于键/值存储,这实际上是荒谬的。 @PittsburghDBA - 更准确地说,构成密钥的字符串数据限制为 512 MiB。引擎盖下使用了 32 位 int,因此限制 可能 理论上是 2 GiB 而不会发生太大变化(因此造成混淆)。 当然是这样。但是你必须重新编译源代码,我认为在同一个线程中已经提到过。【参考方案2】:关于Redis Memory Usage 的文章可以帮助您大致确定您的数据库将占用多少内存。
【讨论】:
【参考方案3】:至少按照您拥有的 RAM 数量的顺序,所以除非您打算在其中放置数 GB 的对象,否则我不会担心。我有数百兆字节的集合没有问题,但我不知道确切的限制。
【讨论】:
我猜我的文件大小将低于 10k,但可能有数千个。如果我有足够的 RAM,这听起来应该可以处理。 我可能误解了你的问题,我以为你问的是单个值的最大大小。如果您担心整个数据库的大小,32 位系统上的限制是 4 Gb,但对于 64 位系统,您无法在服务器中安装足够的 RAM 来达到它。 redis.io/topics/memory-optimization 不,你是对的,我想确保它可以处理我的文件。大多数将是 10k 范围,但有时它们可能会跳到 MB 范围,所以看起来它会正常工作。感谢您的其他答案,这也很高兴。【参考方案4】:字符串值可以容纳最大512MB 的大小。但是根据这个link,大小是可以增加的。
【讨论】:
以上是关于你可以在redis中存储的最大值是多少?的主要内容,如果未能解决你的问题,请参考以下文章