ruby-on-rails-3 - 带有 Resque 和 Rails 的 Redis : ERR command not allowed when used memory > 'maxmemory'

标签 ruby-on-rails-3 redis resque

使用redis时报错:

ERR command not allowed when used memory > 'maxmemory'

信息命令显示:

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

used_memory 高吗?我是一个完整的 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 将所有内容都存储在内存中(它永远不会将数据溢出到磁盘上),因此您的 Resque 队列的所有内容都必须适合。对于 Resque 引擎来说,几 MB 似乎非常低。

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

关于ruby-on-rails-3 - 带有 Resque 和 Rails 的 Redis : ERR command not allowed when used memory > 'maxmemory' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9987832/

相关文章:

ruby-on-rails - 将 api key 添加到 ActiveResource 中的每个请求

ruby-on-rails - 在 Rails 3 中,respond_to 和 format.all 的工作方式与 Rails 2 不同吗?

database - 有什么有效的方法可以减少 HyperLogLog ( redis ) 中的错误?

ruby-on-rails - 如何使用 ActionController::Live 以及 Resque + Redis(用于聊天应用程序)

ruby - 如何在不同的服务器上运行 Resque worker 但从一台 redis 服务器轮询作业

ruby-on-rails - 重新请求作业和 rspec

ruby-on-rails-3 - 如何 stub :errors collection to act invalid when rspec tests a controller that uses respond_with

ruby-on-rails - state_machine vs aasm gems在Rails 3.2上的应用程序 ruby

redis - Spinnaker 是否支持 Redis 4?

java - jedis 交易成功响应