だいたいいつもデータ構造をRDBのテーブルにする時は、id(Primary Key), name, description(自由に使える備考欄), updated(レコードの更新時刻), disabled(レコードの無効フラグ)の構成 + 必要なカラムを用意するのですが、今回はidに相当するものとnameだけあれば良いので、KVSで試験してみようと。
コンパイルとインストール
/usr/local/srcでソースコードを展開してコンパイルして/usr/local/redisに入れる事にします。
# cd /usr/local/src ⏎
# wget http://redis.googlecode.com/files/redis-2.6.12.tar.gz ⏎
...
# gunzip -c redis-2.6.12.tar.gz | tar vfx - ⏎
...
# cd ./redis-2.6.12⏎
configureはないのでそのままmakeします。OpenBSDなのでgmakeでやります。# gmake && gmake test ⏎
...
# gmake PREFIX=/usr/local/redis install ⏎
cd src && gmake install
gmake[1]: Entering directory `/usr/local/src/redis-2.6.12/src'
INSTALL redis-sentinel
Hint: To run 'make test' is a good idea ;)
mkdir -p /usr/local/redis/bin
INSTALL install
INSTALL install
INSTALL install
INSTALL install
INSTALL install
gmake[1]: Leaving directory `/usr/local/src/redis-2.6.12/src'
binディレクトリにコマンドが幾つかインストールされるだけで、manとかは入りません。設定ファイルを準備
設定ファイルはソースコードのディレクトリにあるredis.confを/usr/local/redis/etcあたりにコピーしておきます。sentinel.confは今回は試験しませんが、コピーだけしました。それ以外にメモリダンプしたりログを出したりするディレクトリも作っておきます。
# mkdir /usr/local/redis/etc ⏎
# cp ./*.conf /usr/local/redis/etc ⏎
# mkdir /usr/local/redis/{sbin,var} ⏎
# mkdir /usr/local/redis/var/{data,log} ⏎
/usr/local/redis/etc/redis.confは、ソースコードについていたredis.confから下記の点を変更しました。
起動スクリプト
ソースコードのutils/redis_init_scriptをインストールしたディレクトリに合わせて変更して、sbin/serverとして置きました。# cp utils/redis_init_script /usr/local/redis/sbin/server ⏎
# chmod a+x /usr/local/redis/sbin/server ⏎
# vi /usr/local/redis/sbin/server ⏎
スクリプトを用意したので、それで起動して接続したりログを眺めたりします。# /usr/local/redis/sbin/server start ⏎
Starting Redis server...
# tail -f /usr/local/redis/var/log/server.log ⏎
Starting Redis server...
[16545] 27 Apr 12:48:44.587 * Max number of open files set to 10032
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 2.6.12 (00000000/0) 32 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in stand alone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
| `-._ `._ / _.-' | PID: 16545
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
[16545] 27 Apr 12:48:44.591 # Server started, Redis version 2.6.12
[16545] 27 Apr 12:48:44.591 * The server is now ready to accept connections on port 6379
接続してみる
同じホストから/usr/local/redis/bin/redis-cliを実行すると繋がります。別のホストから繋ぐ時は-h ホスト名で。-r 回数オプションを使うと、その後に続くコマンドを指定回数分だけ実行出来ます。
# cd /usr/local/redis ⏎
# ./bin/redis-cli ⏎
redis 127.0.0.1:6379> set neko kijitora ⏎
OK
redis 127.0.0.1:6379> quit ⏎
# echo 'set nyaa 1' | ./bin/redis-cli ⏎
OK
# ./bin/redis-cli -r 1000 incr nyaa ⏎
(integer) 2
(integer) 3
...
(integer) 1001
別のホストから接続する場合もredis-cliを使うと良いですが、telnetでも操作は可能です。
% telnet 192.0.2.12 6379 ⏎
Trying 10.64.19.254...
Connected to 10.64.19.254.
Escape character is '^]'.
get neko ⏎
$8
kijitora
get nyaa ⏎
$4
1004
set mikeneko mi-chan ⏎
+OK
get mikeneko ⏎
$7
mi-chan
^]
telnet> quit ⏎
アプリケーションのほうは、多分PerlのRedisDB使って書くかなぁというところです。
0 件のコメント:
コメントを投稿