2012-04-03 15 views
22

Al utilizar Redis, me da el error:Redis con Resque y rieles: comando ERR No se admiten cuando se utiliza la memoria> 'maxmemory'

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 

Es el used_memory alto? Soy un novato redis completo. Si es así, ¿cómo ocurre este problema y cómo debo proceder desde aquí? Este mismo error ocurre en la producción (Heroku), por lo que cualquier ayuda es muy apreciada. Gracias.

Respuesta

29

Este mensaje se devuelve cuando se alcanza el límite máximo de memoria. Usted puede ver que el límite actual es utilizar el siguiente comando:

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

El resultado se expresa en bytes.

Tenga en cuenta que una instancia de Redis vacía utiliza aproximadamente 710 KB de memoria (en Linux), por lo que si planea almacenar solo 1 MB de datos útiles y aplicar este límite, debe configurar 1734 KB en el parámetro de máxima memoria. En el archivo de configuración, la configuración de la máxima 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 sus colas Resque debe caber. Algunos MB parecen muy bajos para un motor Resque.

No especificó qué opción de Heroku seleccionó, pero mi entendimiento es que el límite de la opción "nano" de Redis To Go (el que está libre) es de 5 MB.

+0

Gracias hombre, que sin duda necesario para mejorar nuestra To Go nivel . – kmurph79

1

Gran respuesta por Didier, estos son sólo 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 

esto es cómo cambiarlo:

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" 
Cuestiones relacionadas