memcachedをUbuntu上で動かす

インストール

Google Code Archive - Long-term storage for Google Code Project Hosting.

eiichi@ubuntu-desktop:~$ sudo apt-get install memcached

起動確認

eiichi@ubuntu-desktop:~$ service --status-all | grep memcached

設定ファイル

eiichi@ubuntu-desktop:~$ sudo vi /etc/memcached.conf

ファイルをちらっと編集

....

#はじめは、動作確認したいので、ログを細かくだす。
-vv

....

#このホストのIPアドレスを与える。
-l 192.168.2.50

....

IPアドレスが、デフォルトの127.0.0.1だと、ローカルからしか接続できないみたい。

別のPCから接続できず、Ubuntuファイアウォールとかネットワークのセキュリティかなにかのせいだと思って、むだにはまってしまった。

単純に、memcachedが起動しているマシンのIPアドレスを設定しておけば良い。

ログファイル

eiichi@ubuntu-desktop:~$ tail -f /var/log/memcached.log

ログを見れば、再起動やら、telnetやクライアントライブラリからのアクセスログがでて、動作確認に役立つ。

再起動

eiichi@ubuntu-desktop:~$ sudo service memcached restart

動作確認 ローカルからtelnetでコマンドをつかってみる。

eiichi@ubuntu-desktop:~$ telnet 127.0.0.1 11211
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused

おっと、接続できない。

eiichi@ubuntu-desktop:~$ telnet 192.168.2.50 11211
Trying 192.168.2.50...
Connected to 192.168.2.50.
Escape character is '^]'.

おっと、接続できたようだ。コマンドを打ってみる。

stats
STAT pid 7792
STAT uptime 1944
STAT time 1326564549
STAT version 1.4.5
STAT pointer_size 32
STAT rusage_user 0.160010
STAT rusage_system 0.564035
STAT curr_connections 7
STAT total_connections 11
STAT connection_structures 9
STAT cmd_get 4
STAT cmd_set 3
STAT cmd_flush 0
STAT get_hits 4
STAT get_misses 0
STAT delete_misses 0
STAT delete_hits 0
STAT incr_misses 0
STAT incr_hits 0
STAT decr_misses 0
STAT decr_hits 0
STAT cas_misses 0
STAT cas_hits 0
STAT cas_badval 0
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 5849
STAT bytes_written 11221
STAT limit_maxbytes 67108864
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT threads 4
STAT conn_yields 0
STAT bytes 186
STAT curr_items 3
STAT total_items 3
STAT evictions 0
STAT reclaimed 0
END
set key1 0 0 5
test1
STORED
get key1
VALUE key1 0 5
test1
END

上の動作確認では、memcachedプロトコルのstats,set,getコマンドをつかってみた。

動作確認 リモートからクライアントライブラリをつかってみる。

検索して見つけた以下のライブラリを試してみる。

Memcached-Java-Client

GitHub - gwhalin/Memcached-Java-Client: Information about this project lives on the wiki

セットアップは、ライブラリをダウンロードして、jarをクラスパスにとおすだけ。

Eclipseでプロジェクトをつくれば、かんたん。

Memcached-Java-Client/HOWTO.txt at master · gwhalin/Memcached-Java-Client · GitHubソースコードを自分の環境に合わせつつ、ちょっぴり修正して、実行してみると

....
        String[] servers = { "192.168.2.50:11211" };

        Integer[] weights = { 1 };
....

    public static void examples() {
        mcc.set("bar", "This is a test String");
        String bar = (String) mcc.get("bar");
        System.out.println("bar=" + bar);
    }

    public static void main(String[] args) {
        MyClass.examples();

    }

実行すると、コンソールに期待通り以下が表示された。

bar=This is a test String


JavaからMemcachedを読み書きする。キーと値の一覧を取得する。 - kaishitaeiichiの日記もうちょっと書き足してみた

xmemcached

Google Code Archive - Long-term storage for Google Code Project Hosting.

セットアップは、ライブラリをダウンロードして、jarをクラスパスにとおすだけ。SLF4Jのjarは、実装クラスが足りないようなので、さらに、SLF4Jのページからダウンロードが必要なのかな。

Eclipseでプロジェクトをつくれば、かんたん。

Google Code Archive - Long-term storage for Google Code Project Hosting.ソースコードを自分の環境に合わせつつ、ちょっぴり修正して、実行してみると

....

    MemcachedClient client = new XMemcachedClient("192.168.2.50", 11211);
....

    System.out.println("someObject=" + someObject);
....

実行すると、コンソールに期待通り以下が表示された。

someObject=test
spymemcached

Google Code Archive - Long-term storage for Google Code Project Hosting.

セットアップは、ライブラリをダウンロードして、jarをクラスパスにとおすだけ。

Eclipseでプロジェクトをつくれば、かんたん。

Google Code Archive - Long-term storage for Google Code Project Hosting.ソースコードを自分の環境に合わせつつ、ちょっぴり修正して、実行してみると

....

        MemcachedClient client = new MemcachedClient(new InetSocketAddress(
            "192.168.2.50", 11211));
        client.set("foo", 3600, "bar");
        Object value = client.get("foo");
        System.out.println("value=" + value);
....

実行すると、コンソールに期待通り以下が表示された。

2012-04-07 00:38:09.136 INFO net.spy.memcached.MemcachedConnection:  Added {QA sa=/192.168.2.50:11211, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0} to connect queue
2012-04-07 00:38:09.141 INFO net.spy.memcached.MemcachedConnection:  Connection state changed for sun.nio.ch.SelectionKeyImpl@85af80
value=bar