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

带Resque和Rails的Redis:当使用的内存>'maxmemory'时,不允许使用ERR命令

计阳泽
2023-03-14
问题内容

使用redis时,出现错误:

ERR command not allowed when used memory > 'maxmemory'

info命令显示:

redis 127.0.0.1:6379> info
redis_version:2.4.10
redis_git_sha1:00000000
redis_git_dirty:0
arch_bits:64
multiplexing_api:kqueue
gcc_version:4.2.1
process_id:1881
uptime_in_seconds:116
uptime_in_days:0
lru_clock:1222663
used_cpu_sys:0.04
used_cpu_user:0.04
used_cpu_sys_children:0.00
used_cpu_user_children:0.00
connected_clients:1
connected_slaves:0
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0
used_memory:930912
used_memory_human:909.09K
used_memory_rss:1269760
used_memory_peak:931408
used_memory_peak_human:909.58K
mem_fragmentation_ratio:1.36
mem_allocator:libc
loading:0
aof_enabled:0
changes_since_last_save:4
bgsave_in_progress:0
last_save_time:1333432389
bgrewriteaof_in_progress:0
total_connections_received:1
total_commands_processed:2
expired_keys:0
evicted_keys:0
keyspace_hits:0
keyspace_misses:0
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:0
vm_enabled:0
role:master

用内存高吗?我是一个完整的Redis新手。如果是这样,怎么会出现此问题,我应该从这里继续进行吗?同一错误都在生产环境中出现(Heroku),因此,我们非常感谢您的帮助。谢谢。


问题答案:

达到最大内存限制时,将返回此消息。您可以使用以下命令检查当前限制:

redis 127.0.0.1:6379> config get maxmemory
1) "maxmemory"
2) "128000000"

结果以字节为单位。

请注意,一个空的Redis实例使用大约710KB的内存(在Linux上),因此,如果您计划仅存储1MB的有用数据并实施此限制,则需要在maxmemory参数中设置1734K。在配置文件中,maxmemory设置以字节为单位,除非您使用K,M,G后缀。

Redis将所有内容存储在内存中(它永远不会将html" target="_blank">数据溢出到磁盘上),因此Resque队列的所有内容都必须适合。对于Resque引擎,几个MB似乎非常低。

您没有指定选择哪个Heroku选项,但我的理解是Redis To Go的“ nano”选项(免费)限制为5 MB。



 类似资料:
  • 问题内容: 尝试设置密钥时出现“不允许OOM命令”, 通过“ volatile-lru” 设置为500M ,我为发送给redis的每个密钥设置TTL。 命令返回: 如果maxmemory设置为500M,我怎么达到809M? 命令没有显示任何键空间,这怎么可能? 返回“(空列表或集合)”,我试图更改数据库号,但仍未找到键。 这是info命令输出: 问题答案: 您是否有可能更改了数据库数量?如果您使用

  • 问题内容: 我正在尝试设置和在我的Rails应用程序的我cache_store配置。 我在production.rb文件中做了以下操作: 但是maxmemory不能正常工作。当我这样做时,我没有任何关于或的方法。 我没有在Rails的网络上看到任何示例,最近的事情是在使用rails缓存时使用rails处理redis maxmemory情况,但是没有给出任何示例。 我还克隆并grepped用于在该宝

  • 问题内容: 当redis达到“最大内存”条件时,它将允许客户端进行读取,但不能进行写入。 当然,这将导致致命错误……有什么方法可以使Rails处理缓存的读或写错误,因此,如果缓存发生问题(可用性,读取,写入等),它将继续以如果缓存设置为“关闭”? 问题答案: 您可以告诉redis在内存已满时要遵守的不同行为。 默认是 也许最好的选择是’volatile-ttl’,并确保所有缓存都包括:expire

  • 问题内容: 我正在编写独立于操作系统的无锁队列,到目前为止,它工作得很好,但是内存管理方面的问题很小。我不确定它的gcc问题还是我的。问题:将元素添加到列表时,内存增加,但是从列表中删除元素(free(elementPointer);)时,内存使用率没有变化。 但是,当我使用pthreads时,N个生产者和M个消费者的 内存使用量始终约为10mb(当尝试添加和删除〜10kk元素时),因此看起来自由

  • 问题内容: 我正在尝试使用以下方式将数据加载到mysql数据库中 这个问题的主题是我得到的答复。我了解默认情况下本地数据卸载是关闭的,因此我必须使用命令启用它,但我不知道将此命令放置在何处。 问题答案: 您可以在设置客户端连接时将其指定为附加选项: 这是因为该功能打开了一个安全漏洞。因此,如果您确实想使用它,则必须以显式方式启用它。 客户端和服务器都应启用本地文件选项。否则它将不起作用。要为服务器

  • 但我还是不断地出错。知道为什么吗?我运行了rake db:reset、rake db:migrate和git push以确保更改了本地数据库。然后我运行git、heroku push和heroku run rake db:reset,但我一直得到那个错误。我是不是漏掉了什么?谢谢