TokyoTyrantとは
memcached並に高速でありながらファイル上にデータを記録し永続化を可能にしています。
レプリケーションも実現していおり、負荷分散や冗長化も可能であり、mixiで採用実績により
安定性を証明しています。unshiuにおいては最終ログイン時刻の保持に採用しています。
利用上の注意
TokyoTyrantはmemcachedのように有効期限というものはもっていません。
必要があれば別途定期的に古いものを削除するようなスクリプトを組む必要があります。
インストール
Windows
現在、Windowsはサポートしていません。開発時にはvmwareなどにLinuxをいれてそちらにインストールしてください。
ただし init.yml で tokyotyrantをoffにすればTokyoTyrantを利用せずにアプリケーションを動かすことはできます。
この際、最終ログイン日などTokyoTyrantの機能を使って保持する値は保持できなくなるので注意してください。
Linux&MacOS
TokyoCabinetのインストール
$ wget http://downloads.sourceforge.net/tokyocabinet/tokyocabinet-1.4.15.tar.gz
$ tar zxf tokyocabinet-1.4.15.tar.gz
$ cd ./tokyocabinet-1.4.15/
$ ./configure
$ make
$ sudo make install
cofigureが
configure: error: bzlib.h is required
と出て失敗したらlibbz2-devをインストールしてください。
TokyoCabinet Ruby用APIインストール
$ wget "http://sourceforge.jp/frs/g_redir.php?m=jaist&f=%2Ftokyocabinet%2Ftokyocabinet-ruby%2F1.23%2Ftokyocabinet-ruby-1.23.tar.gz"
$ tar zxf tokyocabinet-ruby-1.23.tar.gz
$ cd ./tokyocabinet-ruby-1.23
$ ruby extconf.rb
$ make
$ sudo make install
TokyoTyrantのインストール
$ wget http://downloads.sourceforge.net/tokyocabinet/tokyotyrant-1.1.23.tar.gz
$ tar zxf tokyotyrant-1.1.23.tar.gz
$ cd ./tokyotyrant-1.1.23/
$ ./configure
$ make
$ sudo make install
TokyoTyrantのRubyインターフェースをインストール
$ wget "http://sourceforge.jp/frs/g_redir.php?m=jaist&f=%2Ftokyocabinet%2Ftokyotyrant-ruby%2F1.5%2Ftokyotyrant-ruby-1.5.tar.gz"
$ tar zxf tokyotyrant-ruby-1.5.tar.gz
$ cd ./tokyotyrant-ruby-1.5/
$ sudo ruby install.rb
設定変更
設定は ttservctlという起動ファイルで変更できます。
$ vi /usr/local/sbin/ttservctl
デフォルトではポート番号が1978です。Hyper Estraier と被るので適時書き換えてください。
-port="1978"
+port="1979"
ファイル拡張子で内部データベースがかわります。テーブルデータベースを利用するのでその設定を変更します。
-dbname="$basedir/casket.tch#bnum=1000000"
+dbname="$basedir/casket.tct#bnum=1000000"
起動
$ sudo /usr/local/sbin/ttservctl start
注意点
TokyoTyrantは
カーネル 2.5.44で導入された epoll_create
という新しいAPIのインターフェースを利用しているため、それ以前のカーネルではインストールはできても起動しません。以下のログに
epoll_create failed と出力されていればまさにそれが原因です。
/var/ttserver/log
新しいマシンではあまり発生することはないかと思いますが、ころがっていたテストサーバにいれたら動かなかった!ということはありえますのでその際は確認してください。