how to install memcached and to use in php and ruby

memcachedのインストール、設定とphp, rubyからの使い方。
php, ruby間でのmemcache越しのデータやり取り。覚え書き。
rubyはirbから、phpはphp -a からそれぞれ対話型で呼び出し。

インストール
# yum –enablerepo=remi,rpmforge,epel,centosplus install memcached
version 1.4.1 installed from remi

php
# pecl install memcache
version 2.2.5 installed

# yum install php-pecl-memcache
ではだめ。
インストール完了したように見えるがエラーが発生

ruby
$ sudo gem install cached_model

seattle.rb作のrails用(activerecord用)プラグイン
そのうちこれもいるよね、ということでまとめて入れてしまう
同時にmemcache-clientがインストールされる
必要なのはmemcache-client

サービス
# service memcached start
# chkconfig memcached on

php 使い方
$m = new Memcache;
$m->addServer( ‘127.0.0.1’, 11211 );
$m->add( ‘foo’, ‘bar’, 0, 3600 );
echo $m->get( ‘foo’ );
bar

ruby使い方
require ‘rubygems’
require ‘memcache’
cache = MemCache.new( ‘127.0.0.1:11211’ )

cache[‘hoge’] = {‘piyo’ => ‘piyopiyo’}
=> {"piyo"=>"piyopiyo"}
p cache[‘hoge’]
{"piyo"=>"piyopiyo"}
=> nil

phpからruby
$m->add( ‘foo’, ‘bar’, 0, 3600 );

p cache.get( ‘foo’, true )
"bar"
=> nil

rubyからphp
cache.set( ‘eleven’, ’11’, 0, true )
=> "STORED\r\n"

echo $m->get( ‘eleven’ );
11

やりとりできるのは文字列型に変換されたものなので注意
というよりはたまたまうまくやり取りしているように見えるだけの気がする
後ろ側はメモリ上のkeyvalueストアなんだから、調べてきちんと渡せば出来そうだけど
用途がなさそう
jsonにしてつっこんで別言語から引っ張り出す方がまだ現実的?
それだと言語別のmemcacheにした意味があんまね。

rubyからphp
ache.set( ‘eleven’, [1,2,3], 0, true )
=> "STORED\r\n"

var_dump( $m->get( ‘eleven’ ) );
string(3) "123"

phpからruby
$m->set( ‘unko’, array(0,1,2,5), 0, 3600 );
var_dump( $m->get( ‘unko’ ) );
array(4) {
  [0]=>
  int(0)
  [1]=>
  int(1)
  [2]=>
  int(2)
  [3]=>
  int(5)
}

cache.get( ‘unko’, true )
"a:4:{i:0;i:0;i:1;i:1;i:2;i:2;i:3;i:5;}"
=> nil

参考リンク
[memcached] memcache-client導入手順(Rubyクライアント) – Life with IT
http://l-w-i.net/t/memcached/0install_003.txt
ruby,php,perlでmemcacheの中身を使い回す | Parse Error
http://sugizou.jugem.jp/?eid=132
java で memcached に入れたものを ruby で取り出す (その逆も) – Learning to be Me
http://d.hatena.ne.jp/bubbles/20081029/1225291896

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中