ギブソンキャッシュサーバー

画像 私の仕事では、プロセス間の通信を整理したり、システム設定、一時データなどを保存したりするために、キーと値のストレージを頻繁に使用する必要があります。これらの目的で、Redisを使用します。 それは私にぴったりで、すべての図書館の図書館を採用しています。

ちょうど今日、まったく新しいプロジェクトであるGibson Cache Serverに出会いました。 最初のコミットの日付は2013年5月17日です。 何言ってるんだ!


Gibson Cache Serverは、データ構造(ツリー)に基づくメモリ内のキーと値のデータベースであり、redisとmemcachedはハッシュテーブルを使用します。 これにより、複数のキーの操作を一度に使用できます。



開発者によって宣言された機能:



設置



サーバー


ここでは複雑なことは何もありません。 ここでサーバーのソースを取得できます

git clone https://github.com/evilsocket/gibson.git cd gibson make -G «Unix Makefiles» . make sudo make install
      
      





設定ファイルは/etc/gibson/gibson.confにあります

ちなみに、サーバーは-cスイッチを使用して起動できます。これは、構成ファイルへのパスを示し、システムディレクトリにすべてをインストールするわけではありません。



お客様


ソースはこちらです。

ここではすべてが似ています。 唯一の注意点は、linenoiseライブラリのソースコードが./src/linenoiseにあることです。



 git clone https://github.com/evilsocket/libgibsonclient cd libgibsonclient make -G «Unix Makefiles» . make
      
      





「紳士用セット」があります。ヘッダーファイル、ライブラリ自体、およびgibson-cliです。



デモンストレーション



クライアントと現在利用可能なコマンドのリストを起動します。

非表示のテキスト
 deck@crunch ~/work/libgibsonclient $ ./gibson-cli -u /tmp/gibson.sock type :help or :h for a list of commands, :quit or :q to quit. local> :h SET <ttl> <key> <value> TLL <key> <ttl> GET <key> DEL <key> INC <key> DEC <key> LOCK <key> <seconds> UNLOCK <key> MSET <prefix> <value> MTTL <prefix> <ttl> MGET <prefix> MDEL <prefix> MINC <prefix> MDEC <prefix> MLOCK <prefix> <seconds> MUNLOCK <prefix> COUNT <prefix> STATS PING SIZEOF <key> MSIZEOF <prefix> ENCOF <key>
      
      







標準セット/取得

非表示のテキスト
 local> set 0 foo 5 <STRING> 5 local> get foo <STRING> 5
      
      







TTLを使用します。

非表示のテキスト
 local> set 3 bar hi! <STRING> hi! local> get bar <STRING> hi! local> get bar <REPL_ERR_NOT_FOUND>
      
      







まあ、複数のget / set

非表示のテキスト
 local> set 0 score:user1 400 <STRING> 400 local> set 0 score:user2 100 <STRING> 100 local> set 0 score:user3 900 <STRING> 900 local> mget score score:user1 => <STRING> 400 score:user2 => <STRING> 100 score:user3 => <STRING> 900 local> mset score 0 <NUMBER> 3 local> mget score score:user1 => <STRING> 0 score:user2 => <STRING> 0 score:user3 => <STRING> 0
      
      









性能



開発者のサイトには、マシンの取得/設定操作で実行したテストデータが含まれています。

Debian Squeeze搭載の8GBのRAMを搭載したIntel Core(TM)i3-2130 CPU @ 3.40GHz

彼は自分のデータベースをRedisと比較しました。 結果は次のとおりです。

レディス

非表示のテキスト
 $ redis-benchmark -c 1 -n 100000 -q -t SET SET: 51519.84 requests per second $ redis-benchmark -c 1 -n 100000 -q -t GET GET: 49212.60 requests per second
      
      







ギブソン

非表示のテキスト
 @ Created 100000 / 100000 in 1216ms -- 82236.842105 Req/s @ Verified : 100000 / 100000 in 1145ms -- 87336.244541 Req/s
      
      







unningでない場合、これらの操作のパフォーマンスはギブソンで60%高くなります。



おわりに



現在、php用ライブラリが既にあります 。 また、彼らはすぐにNodejsのサポートを追加することを約束します。

ライブラリは粗雑ではありませんが、注目に値します。 私のタスクの下で完璧にフィットするはずです。 何が起こるか見てみましょう。



All Articles