OSX上でRedisの動作を確認しているのですが、以下のエラーが出る原因を詳しく知りたいです。

OOM command not allowed when used memory

環境は、

  • Redis 2.8.19
  • maxmemory-policy allkeys-lru

設定ファイルは、maxmemory-policy allkeys-lruとしているのに、上記のエラーが出るのは何故か。と調べたところ、

英語版のstackoverflowにありました。

この回答によるとused_memory_luaがメモリを多く使用しているからという感じでしたが、
used_memory_luaが多くなる原因が知りたいです。

ローカル環境で、

  • maxmemory 1080KB
  • maxmemory-policy allkeys-lru

として、メモリ使用量が超えた時の動作を確認していたのです。
(一度エラーが出た後に、Redisを再起動するとエラーがなかなか出ません。)

コマンドinfoで確認すると、

\# Memory
used_memory:1090400
used_memory_human:1.04M
used_memory_rss:1916928
used_memory_peak:1105312
used_memory_peak_human:1.05M
used_memory_lua:35840
mem_fragmentation_ratio:1.76
mem_allocator:libc

という状態なのですが、used_memory_luaが上記より増加していくのか、
増加するとOOMエラーが出るのか。その上限値は?など。

目的は

  • redisサーバはAWS Elasticache 256MB(cache.t1.micro)を使っている
  • redisのデータはTTL(期限?)が設定してあるものとないものが混在
  • キャッシュと一時的なデータだけなので永続化は不要
  • メモリ容量が超えた場合の削除順もランダムでいい

なのですが、例えば以下の環境だと、エラーを出さずにデータをランダムに削除して使うには、
どのような設定になるのでしょう?

  • サーバのメモリが512MB
  • Redisのmaxmemoryが256MB
  • used_memory_luaはどのくらいの容量になる?
  • 目的を果たすにはどのような設定が必要なのか?

==== 追記(エラー時のメモリinfo) ====

エラー時の値です。エラーが出る基準がわかりません。

\# Memory
used_memory:1038432
used_memory_human:1014.09K
used_memory_rss:2031616
used_memory_peak:1105312
used_memory_peak_human:1.05M
used_memory_lua:35840
mem_fragmentation_ratio:1.96
mem_allocator:libc