2012-04-03 2 views
22

При использовании Redis, он дает мне ошибку:Redis с Resque и Rails: команда ERR не допускается при использовании памяти> 'maxmemory'

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 

Is used_memory high? Я полный redis noob. Если да, то как эта проблема возникает и как мне исходить отсюда? Эта же ошибка происходит в производстве (Heroku), поэтому любая помощь очень ценится. Спасибо.

ответ

29

Это сообщение возвращается, когда предел maxmemory достигнут. Вы можете проверить, что предельный ток с помощью следующей команды:

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

В результате в байтах.

Обратите внимание: пустой экземпляр Redis использует около 710 КБ памяти (в Linux), поэтому, если вы планируете хранить только 1 МБ полезных данных и применять этот предел, вам необходимо установить 1734K в параметр maxmemory. В файле конфигурации параметр maxmemory находится в байтах, за исключением случаев, когда вы используете суффикс K, M, G.

Redis хранит все в памяти (он никогда не проливает данные на диск), поэтому все содержимое очередей Resque должно соответствовать. Несколько MB кажутся очень низкими для двигателя Resque.

Вы не указали, какой вариант Heroku вы выбрали, но я понимаю, что опция Redis To Go «nano» (свободный) составляет 5 МБ.

+0

Благодаря человеку, мы, безусловно, необходимо, чтобы модернизировать наши To Go ярус , – kmurph79

1

Великий ответ на Didier, это просто шаги, чтобы увеличить его:

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

Это как изменить его:

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" 
Смежные вопросы