Rubyでmemcachedを使う

REMPAPI周りでキャッシュを使いたくなったので、memcachedを使おうと思ったのだけどRubyで使う場合のクライアントを知らなかったので簡単にまとめ。
Ruby用のmemcacheクライアントはいくつかある様なのだけど、dalliというクライアントが一般的な様なので使ってみた。

インストールは簡単。gemコマンドでインストールできる。

$ sudo gem install dalli
Fetching: dalli-1.1.4.gem (100%)
Successfully installed dalli-1.1.4
1 gem installed
Installing ri documentation for dalli-1.1.4...
Installing RDoc documentation for dalli-1.1.4...

使い方も比較的シンプル。
irbで試すと以下の様な形で利用できる。
(localhostの11211番ポートでmemcachedサーバが常駐している状態)

irb(main):001:0> require 'dalli'
=> true
irb(main):002:0> dc = Dalli::Client.new('localhost:11211')
=> #0}, @ring=nil>
irb(main):003:0> dc.set("hoge", "foo")
=> true
irb(main):004:0> dc.get("hoge")
=> "foo"
irb(main):005:0> dc.get("hoge2")
=> nil

REMPは、sinatraで稼働させているのでその場合は以下の様な書き方をしておけばよいかと思う。

# (中略)
configure do
cache = Dalli::Client.new('localhost:11211', :expires_in => 3600 * 24)  # キャッシュ寿命24時間
set :cache, cache
end
get '/foo' do
tmp = setting.cache.get(params['id'])
val = 0
if tmp.nil?
val = db.getValue()   # DBからデータ取得
else
val = tmp  # memcachedのキャッシュを利用
end
val
end

意外と手軽にできたな。
ちょっとRubyのmemcachedクライアントがいくつかあったので迷ったけど、これで大丈夫そう。

(Visited 5 times, 1 visits today)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です