Subcribe via RSS

Kyoto TycoonをJavaから利用する

2011/12/23 | Posted in db, java

Kyoto tycoonのセットアップは、以前のエントリを参照



Kyoto Tycoonの起動

memcachedプラグインを有効にして起動します。
ktserver -plsv /usr/local/libexec/ktplugservmemc.so -plex 'port=22222' test.kch

Xmemcachedというライブラリを使います。
参考:

Xmemcachedのダウンロード

JavaプログラムからKestrelを利用するために、Xmemcachedというmemcached用のライブラリを利用します。
http://code.google.com/p/xmemcached/downloads/list からxmemcached-1.3.5-bin-with-dependencies.tar.gz をダウンロードして利用します。



利用プログラム例
String hostname = "localhost";
String port = "22222";
int expiration_time = 0;

XMemcachedClientBuilder builder = new XMemcachedClientBuilder(
        AddrUtil.getAddresses(hostname + ":" + port));
builder.setTranscoder(new TokyoTyrantTranscoder());
MemcachedClient client = builder.build();

ArrayList<String> keylist = new ArrayList<String>();

try{
    // set data
    System.out.println("set data");
       for(Integer i = 0; i != 5; i++){
        String value = "value" + i;
        client.set(i.toString() , expiration_time, value);
        keylist.add(i.toString());
    }    

    // get data

    // bulk get
    System.out.println("bulk get");
    Map<String, Object> valuemap = client.get(keylist);
    for(Integer i =0; i != 5; i++){
        System.out.println(valuemap.get(keylist.get(i)));            
    }

    // single get
    System.out.println("single get");
    for(Integer i=0; i != 5; i++){
        String value = client.get(i.toString());
        System.out.println(value);
    }

    // delete data
        System.out.println("delete data from db");

    for(Integer i=0; i != 5; i++){
        client.delete(i.toString());
    }

} catch (TimeoutException e) {
    // memcached operation timeout
    e.printStackTrace();
} catch (InterruptedException e) {
    // ignore
    //e.printStackTrace();
} catch (MemcachedException e) {
    // memcached operation fail
    e.printStackTrace();
}




Tags: , , ,

kyoto tycoonをcentosにセットアップ

| Posted in centos, db

前準備

依存するpackageのインストール
gcc44がないと、makeできないから注意です。

sudo yum install gcc44 gcc44-c++ boost-devel zlib-devel
(libbzip2も必要かも)

kyoto cabinetインストール

まずはkyoto cabinetを入れます。

wget http://fallabs.com/kyotocabinet/pkg/kyotocabinet-1.2.70.tar.gz
tar zxf kyotocabinet-1.2.70.tar.gz 
cd kyotocabinet-1.2.70
./configure CC=gcc44 CXX=g++44
make
sudo make install

/etc/ld.so.conf に /usr/local/lib を追加
sudo ldconfig

kyoto tycoonのインストール


wget http://fallabs.com/kyototycoon/pkg/kyototycoon-0.9.52.tar.gz
tar zxf kyototycoon-0.9.52.tar.gz 
cd kyototycoon-0.9.52
./configure CC=gcc44 CXX=g++44
make 
sudo make install
sudo ldconfig


kyoto tycoonの起動


memcachedプロトコルで使いたいので、memcachedプラグインを有効にします

ktserver -plsv /usr/local/libexec/ktplugservmemc.so -plex 'port=22222'
永続化するためには、db ファイル名を指定する必要があるようです。
ktserver -plsv /usr/local/libexec/ktplugservmemc.so -plex 'port=22222' [db filename]

[db filename]は、拡張子によってKyoto Cabinet内のdb(索引付け)が変わります。

(null): オンメモリ
“.kch”: ハッシュDB
“.kct”: ツリーDB
“.kcd”: ディレクトリハッシュdb
“.kcf”: ディレクトリツリーdb


ktserver -plsv /usr/local/libexec/ktplugservmemc.so -plex 'port=22222' test.kch

参考:





Tags: , , ,

KestrelをJavaから利用する

2011/12/20 | Posted in java

kestrelのセットアップについては以前の記事を参照してください。




以下では、JavaのプログラムからKestrelのキューを利用する方法を説明します。

Kestrelは、memcachedプロトコルで利用できるので、memcachedのライブラリなら基本的に大丈夫だと思います。
でも、kestrelに対応しているというところと、パフォーマンスがよさそうなところから、Xmemcachedというライブラリを利用します。

参考:



Xmemcachedのダウンロード

JavaプログラムからKestrelを利用するために、Xmemcachedというmemcached用のライブラリを利用します。
http://code.google.com/p/xmemcached/downloads/list からxmemcached-1.3.5-bin-with-dependencies.tar.gz をダウンロードして利用します。


プログラム例

こんな感じで使えます。

import net.rubyeye.xmemcached.MemcachedClient;
import net.rubyeye.xmemcached.XMemcachedClientBuilder;
import net.rubyeye.xmemcached.command.KestrelCommandFactory;
import net.rubyeye.xmemcached.exception.MemcachedException;
import net.rubyeye.xmemcached.utils.AddrUtil;

(略)
{
    private XMemcachedClientBuilder builder = null;
    private MemcachedClient client = null;
    int expirationTime = 0;
    String queueName = "test";
    Striing host = "localhost";
    int port = "22133";
  
    builder = new XMemcachedClientBuilder(AddrUtil.getAddresses(host + ":" + port));
    builder.setCommandFactory(new KestrelCommandFactory());
    client = builder.build();

    client.set(queueName, expirationTime, "hello");

    String res = client.get(queueName);
    System.out.println(res);
}

参考:


エラーが出るときは、ketrelの設定を確認してみてください。

docs/guide.md at master from robey/kestrel – GitHub




Tags: ,

[Mac]lionでJAVA_HOMEを設定(jdkのインストールも)

2011/9/25 | Posted in mac, programming

LionではJDKが予めインストールされている?かもしれません。
ターミナルで

$ java -version
が出来れば入っていると思います。

その場合、~/.bashrcなどに
export JAVA_HOME=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
を追記して再読み込みすれば、JAVA_HOMEが反映されます。
$ source ~/.bashrc

javaがなければ、

http://support.apple.com/downloads/#Java

からダウンロードしてインストールできます。




Tags: ,

[Mac]JAVA_HOME/include以下にjni.hがないというエラーを解決

| Posted in mac, programming

Mac OSX (lion)で、とあるconfigureスクリプトを実行中に

cannot find jni.h in /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/include.
というエラーが出ました。

JAVA_HOMEの設定は済んでいるとして、
(参考 [Mac]lionでJAVA_HOMEを設定(jdkのインストールも) | tjun memo
$ sudo ln -s /Developer/SDKs/MacOSX10.7.sdk/System/Library/Frameworks/JavaVM.framework/Versions/A/Headers $JAVA_HOME/include

Lionだと
$ sudo ln -s /System/Library/Frameworks/JavaVM.framework/Versions/Current/Headers $JAVA_HOME/include
これで解決すると思います。




Tags: ,
  • 書いてる人:

    Junichiro Takagi
    高木潤一郎

    http://tjun.jp
    t.junichiro@gmail.com

    技術的なメモを書いています。
    このブログは、会社とは関係なく個人の意見を書いています。

    RSS:


  • friendfeed: