IBM Bluemix では様々な API がサービスとして提供されていますが、その中の1つでメモリキャッシュの機能を提供する Memcached Cloud があります:
同サービスは IBM のビジネスパートナーである Redis Labs から提供されているものです。同社からは他にも Redis のサービスである Redis Cloud も提供されています。
この Memcached Cloud サービスを使ってみようと試みた時に、自分が躓いた点がありました。これまで自分が memcached を使う時はユーザーやパスワードの認証を使ったことがなく、そのため認証を前提としない JAR ライブラリを用意して使っていたのですが、Memcached Cloud ではユーザー&パスワードの認証が必要になります。というわけで、認証に対応したライブラリを用意する必要がありました。その手順を見つけるのに苦労したり、ドキュメントに書かれている通りには動かなかったりしたので、備忘録として手順をここに記録しておくことにします。
まず、認証に対応した Java の Memcached ライブラリとしては spymemcached を使うことにします:
spymemcached は上記のように github からソースコードが提供されています。どこかからバイナリを探してダウンロードしてもいいのですが、自分は(最新版で試したいという意味もあったので)このソースからビルドしました。
ビルドの手順はこんな感じです。Linux(自分の場合は CentOS 6)のコマンドラインから以下のように入力して、ソースコードをダウンロードし、ant でビルドしました:
ant のビルドが成功すると、build/jars 以下に spymemcached のバイナリ jar ファイルが作られます(この例ではバージョンは 2.11.4 です。以下のコードはこのバージョンでの動作を確認しています。またファイル名に test が付いている方はこの後では不要です)。このファイルを使って Java のコードを記述します:
実際の Java コードはこのような感じになります。例えば memcached クライアントである MemcachedClient インスタンスを取得するには以下のように記述します(赤字の部分がユーザー名、パスワード、サーバー名です):
ドキュメントとの差異としては、AuthDescriptor のコンストラクタへ渡す第一引数の型は String ではなく String 配列にする必要があるようです。というわけで上記青字のような感じにしました。
同サービスは IBM のビジネスパートナーである Redis Labs から提供されているものです。同社からは他にも Redis のサービスである Redis Cloud も提供されています。
この Memcached Cloud サービスを使ってみようと試みた時に、自分が躓いた点がありました。これまで自分が memcached を使う時はユーザーやパスワードの認証を使ったことがなく、そのため認証を前提としない JAR ライブラリを用意して使っていたのですが、Memcached Cloud ではユーザー&パスワードの認証が必要になります。というわけで、認証に対応したライブラリを用意する必要がありました。その手順を見つけるのに苦労したり、ドキュメントに書かれている通りには動かなかったりしたので、備忘録として手順をここに記録しておくことにします。
まず、認証に対応した Java の Memcached ライブラリとしては spymemcached を使うことにします:
spymemcached は上記のように github からソースコードが提供されています。どこかからバイナリを探してダウンロードしてもいいのですが、自分は(最新版で試したいという意味もあったので)このソースからビルドしました。
ビルドの手順はこんな感じです。Linux(自分の場合は CentOS 6)のコマンドラインから以下のように入力して、ソースコードをダウンロードし、ant でビルドしました:
# cd /usr/local/src # git clone https://github.com/dustin/java-memcached-client # cd java-memcached-client # ant
ant のビルドが成功すると、build/jars 以下に spymemcached のバイナリ jar ファイルが作られます(この例ではバージョンは 2.11.4 です。以下のコードはこのバージョンでの動作を確認しています。またファイル名に test が付いている方はこの後では不要です)。このファイルを使って Java のコードを記述します:
# cd build/jars
# ls
spymemcached-2.11.4.jar spymemcached-test-2.11.4.jar
実際の Java コードはこのような感じになります。例えば memcached クライアントである MemcachedClient インスタンスを取得するには以下のように記述します(赤字の部分がユーザー名、パスワード、サーバー名です):
: : import net.spy.memcached.*; import net.spy.memcached.auth.*; : : MemcachedClient mc = null; try{ PlainCallbackHandler ph = new PlainCallbackHandler( "username", "password" ); AuthDescriptor ad = new AuthDescriptor( new String[] { "PLAIN" }, ph ); mc = new MemcachedClient( new ConnectionFactoryBuilder() .setProtocol(ConnectionFactoryBuilder.Protocol.BINARY) .setAuthDescriptor( ad ).build(), AddrUtil.getAddresses( "server.test.com:19606" ) ); if( mc != null ){ : : } }catch( Exception e ){ e.printStackTrace(); }
ドキュメントとの差異としては、AuthDescriptor のコンストラクタへ渡す第一引数の型は String ではなく String 配列にする必要があるようです。というわけで上記青字のような感じにしました。
コメント