最終更新:2012-08-08 (水) 13:42:03 (4278d)  

Redis
Top / Redis

A persistent key-value database with built-in net interface written in ANSI-C for Posix systems

http://redis.io/

http://code.google.com/p/redis/

概要

Redisはmemcachedと同様にキーと値のペアをメモリ上に保持するKVSの一種だが、3つの際立った特徴がある。

  • ハッシュ以外のデータ構造もサポートしていることで、リスト型?集合型?順序付き集合型?などのデータ構造が扱え、サーバ側でコレクションに対するpush/pop、コレクション同士のunion/intersection、数値のincr、decrなどの操作がアトミックに行える。バージョン2.0では複数の操作を1つにまとめてアトミックに操作するコマンドも増えている。
  • マスター・スレーブによるレプリケーション設定ができ、リード側のスケールアウトが容易にできること。
  • メモリ上のデータセットをプライマリとしつつ、非同期でディスクへ書き出しできること。ディスク書き出しのタイミングは、設定で経過秒数や累積オペレーション数を指定できる。

RedisはCで各種データ構造を実装したものをデーモンとしたようなソフトウェアで、リード・ライトともに非常に高速なのが特徴。ただ、実メモリに乗り切らないデータセットは扱えないことから利用局面が限定的だった。バージョン2.0では、新たに独自に仮想メモリ機構を実装。実メモリに乗り切らないデータをディスクへ書き出す仕組みを取り入れた。

メモ

アトミックな数字のインクリメント程度なら多くのNoSQLがサポートしているのですが、Redisは原則すべての操作がアトミックで、たとえば配列に対する追加や取り出しなども一貫してアトミックに行えるので(あるデータベースから別のデータベースへ値を移動するという操作さえアトミックです)、プログラマがロックや競合状態のことを心配することなく気軽にアプリケーションを書けます

永続化

デフォルトで「60秒間に10000回、あるいは5分間に10回、あるいは15分間に1回の書き込みがあればセーブする」というルールで、メモリ状態のデータベースファイルへの書き出しを行なう

ライブラリ

.NET

スポンサー

Redis on Windows prototype

参考