nacookan回答ポイント 200ptウォッチ

Rails3で、dalliを使ってRails.cacheでMemcachedを扱う上で、値の更新が反映されるタイミングについて質問です。


unicornで複数のRailsのプロセスを立ち上げているのですが、片方のプロセスで更新したデータが他のプロセスで実行中の処理に反映されるタイミングに疑問があります。

例えばAのプロセスで

loop do
 logger.info Rails.cache.read("hoge")
 sleep 1
end

とやって、1秒ごとにキャッシュ "hoge" の値をログに出し続けるとします。

これをやってる間に、Bのプロセスで、

Rails.cache.write("hoge", "1")

とやってキャッシュ "hoge" の値を更新したとしても、Aのプロセスがログに出す値が "1" に変化しません。

しかし、プロセスAを一度止めて、もう一度呼び出すと、"1" が出るようになります。

これはつまり、dalliを使ってMemcachedをストアとしたRails.cache.readは、一度データを読み込んでしまうと、(Rubyプロセス上のメモリにキャッシュしてしまうなどの理由で)他から更新されても反映されないということなのでしょうか?

これをすぐに反映されるようにしたいんですが、何か良い方法はありますか?

ruby 1.9.3p392
rails 3.2.8
dalli 2.6.3
memcached 1.4.4

※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。
ログインして回答する

みんなの回答

この質問へのコメント

コメントはありません

この質問への反応(ブックマークコメント)

質問の情報

登録日時
2013-07-30 18:17:10
終了日時
2013-08-06 18:20:04
回答条件
1人10回まで

この質問のカテゴリ

この質問に含まれるキーワード

Ruby760Rails217memcached19Ruby 1.915hoge915キャッシュ638プロセス576cache80

人気の質問

メニュー

PC版