remedy ruby-on-rails-3 redis resque

ruby-on-rails-3 - rescue remedy



Redis con Resque y Rails: comando ERR no permitido cuando se usa la memoria> ''maxmemory'' (2)

Al usar redis, me da el error:

ERR command not allowed when used memory > ''maxmemory''

El comando info revela:

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

¿La memoria usada es alta? Soy un completo redis noob. Si es así, ¿cómo ocurre este problema y cómo debo proceder desde aquí? Este mismo error está ocurriendo en la producción (Heroku), por lo que cualquier ayuda es muy apreciada. Gracias.


Este mensaje se devuelve cuando se alcanza el límite máximo de memoria. Puede verificar cuál es el límite actual usando el siguiente comando:

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

El resultado está en bytes.

Tenga en cuenta que una instancia de Redis vacía usa aproximadamente 710 KB de memoria (en Linux), por lo que si planea almacenar solo 1 MB de datos útiles y hacer cumplir este límite, debe configurar 1734 K en el parámetro maxmemory. En el archivo de configuración, el valor máximo de memoria está en bytes, excepto si usa un sufijo K, M, G.

Redis almacena todo en la memoria (nunca derrama datos en el disco), por lo que todo el contenido de las colas de Resque tiene que caber. Unos pocos MB parecen muy bajos para un motor Resque.

No especificó qué opción de Heroku seleccionó, pero mi entendimiento es que la opción "nano" de Redis To Go (la opción gratuita) es de 5 MB.


Gran respuesta por Didier , estos son solo los pasos para aumentarla:

redis-cli 127.0.0.1:6379> config get maxmemory 1) "maxmemory" 2) "67108864" # (67mb) this will be different in your case

Así es como se cambia:

127.0.0.1:6379> config set maxmemory 100mb OK 127.0.0.1:6379> config set maxmemory-policy allkeys-lru OK 127.0.0.1:6379> config get maxmemory 1) "maxmemory" 2) "104857600"