CACHE.flush_all がうまく動かないのはなぜだろう・・・
TEST
環境
version | |||
memcache-client | 1.7.2 | ||
ruby | 1.8.6 p368 | ||
memcached | 1.2.2 |
コード
require 'rubygems' require 'memcache' cache = MemCache.new 'localhost:11211' cache["bar"] = "hoge" puts cache["bar"] cache.flush_all puts "== after flush_all ==" puts cache["bar"] cache.delete("bar") puts "== after delete ==" puts cache["bar"]
実行
% ruby ./memcache_test.rb fuga == AFTER flush_all == fuga == AFTER delete == nil
flush_all したときは、消えていなくて、delete したときは消えているのが分かる
flush_all で ERROR が吐かれている
/usr/local/lib/ruby/gems/1.8/gems/memcache-client-1.7.2/lib/memcache.rb の下記の部分を以下のようにすれば flush_all 使用可能だが・・・。\r\n は \n でもOK。
- socket.write "flush_all #{delay_time}#{noreply}\r\n" + socket.write "flush_all \r\n"
修正後の実行、flush_all で消えている。
% ruby ./memcache_test.rb fuga == AFTER flush_all == nil == AFTER delete == nil
下記は ERROR になり、flush_all が効かない。そのため、delay_timeが設定できない・・。うーむ。
socket.write "flush_all #{delay_time}\r\n"
socket.write で 引数つきのコマンドを発行する場合の問題とかかな・・・?