web-dev-qa-db-ja.com

ResqueとRailsを使用したRedis:使用済みメモリ> 'maxmemory'の場合はERRコマンドは許可されません

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

Used_memoryは高いですか?私は完全なredis初心者です。もしそうなら、この問題はどのように発生し、私はここからどのように進むべきですか?これと同じエラーがすべて本番環境(Heroku)で発生しているため、ご協力いただければ幸いです。ありがとうございました。

23
kmurph79

このメッセージは、maxmemory制限に達したときに返されます。次のコマンドを使用して、現在の制限が何であるかを確認できます。

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

結果はバイト単位です。

空のRedisインスタンスは約710KBのメモリを使用することに注意してください(Linuxの場合)。したがって、1MBの有用なデータのみを保存してこの制限を適用する場合は、maxmemoryパラメーターに1734Kを設定する必要があります。構成ファイルでは、K、M、Gサフィックスを使用する場合を除き、maxmemory設定はバイト単位です。

Redisはすべてをメモリに保存するため(ディスクにデータが流出することはありません)、Resqueキューのすべてのコンテンツが収まる必要があります。 Resqueエンジンの場合、数MBは非常に低いようです。

選択したHerokuオプションを指定していませんが、私の理解では、Redis To Goの「nano」オプション(無料のもの)の制限は5MBです。

29
Didier Spezia

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"
2
tokhi