はかますたいる!きょろの技的雑記

井上恭輔(@kyoro353)の私的かつ技的な日記です。米国サンフランシスコで暮らすエンジニアです。

memcacheを使ってみた!

memcacheサーバを入れるのは超簡単!
PHPのmemcachクライアントをインストールするのも簡単なんだけど、
何故かFreeBSDではPerlのmemcacheクライアントのインストールでこける。

cpan install Cache::Memcache

だと上手くいかなくて色々やってたら

cpan install Cache::Memcache::Fast

だと簡単に入った!!やったねv


で、早速プログラムから使ってみようと思って
以下のような実験をやってみた。


① perlから存在期限付きで値をセット
② PHPから値の有無を判断


まぁ要するに「最終ログイン5分以内」を2言語間でやってみたかっただけね。

以下、超簡単なサンプルです。

Perl側・状態設定

memset.pl

  use strict;
  use warnings;
  use Cache::Memcached::Fast;

  my $fast = Cache::Memcached::Fast->new(
             +{ servers => ['127.0.0.1:11211'] } );

  $fast->set('status','in',5);

  #ちなみに値の取得はこうする
  # my $str = $fast->get('status');

PHP側・状態呼び出し

memget.php

<?php
 $memcache = new Memcache;
  $memcache->connect('127.0.0.1', 11211) 
             or die ("Could not connect");

  $s = $memcache->get("status");
  if($s){
      print "Active";
  }else{
      print "Lost";
  }
  #ちなみに値の設定はこうする
  # my $str = $fast->set('status','in',5);
?>

これで、Perlのプログラムを実行してから5秒間は
PHPの方でArriveと表示され、
5秒以上経つとLostに切り替わる、
なんて動作をします。

ちなみにtelnetでプロトコル叩いて直に取得してみたら平文で入ってた。
シンプルで本当に素敵だ。