Ruby 逆引きレシピ レシピ103
Ruby 逆引きレシピ すぐに美味しいサンプル&テクニック 232 (PROGRAMMER’S RECIPE)
- 作者: 島田浩二,設樂洋爾,村田賢太,前田智樹,谷口文威
- 出版社/メーカー: 翔泳社
- 発売日: 2009/07/25
- メディア: 単行本(ソフトカバー)
- 購入: 16人 クリック: 349回
- この商品を含むブログ (77件) を見る
今日はレシピ 103 を読みました。
memcached のところです。今日は1レシピだけに専念して memcached をインストールして少し触ってみました。
勉強用の環境は Mac OS X だったので、以下でサーバと ruby 版のクライアントライブラリをインストールしました。
$ sudo port install memcached $ gem install memcache-client
レシピ本にあるとおり触ってみるとクライアントからは Hash のような使い心地でした。レシピ本には書かれていませんでしたが、Hash と同じように [ ], [ ]=, fetch などのメソッドも利用可能でした。ただし Hash#fetch と違って MemCache#fetch はキーが未登録でも nil を返します(Hash#fetch は例外を発生)。もちろん memcached サーバに値が保存されているので、別のプロセスからも値の取り出しや更新ができて反映されます。
cache = MemCache.new("localhost:11211", namespace: "my_namespace") cache.set("key1", "value1", 60) cache.set("key2", "value2", 60) cache.get("key1") #=> "value1" cache["key3"] = "value3" cache["key3"] #=> "value3" cache.fetch("key4") #=> nil
ちょっとおもしろいと思ったのは、set の第3引数に値の有効期限の指定があることです。秒数で指定して、この時間を過ぎると値が消えるみたいでした。memcache というくらいなので一時的なキャッシュ用なんですね、なるほど。 0 を指定することで有効期限をなしにすることもできるそうです。
あとは更新が同時に行なわれたらどうするのかとか、複数サーバを起動して、一部を落としても動作するかとかいったあたりがおもしろそうですが、それらはあらためて調べてみたいと思います。