memcachedライクなKey-Value方式

永続化対応のインメモリDB「Redis」が登場

2009/02/26

 memcachedに似たキーと値の対を保存するタイプの新しいデータベース「Redis」がGoogle Codeで2月25日にベータ版として公開された。開発したのは、イタリア人でフリーランスの開発者、Salvatore Sanfilippo氏。同氏はイタリアでソーシャルブックマークサイトやソーシャルニュースサイトを立ち上げた経験があり、現在はWebサイトの訪問者をリアルタイムで追加表示するステータス情報取得サービスを開発中という。

 Redisのソースコードは、GPL2のライセンスで公開されている。ANSI Cで書かれていて、LinuxやMac OS Xを含む多くのPOSIXシステムで動く。現在、PHPやRubyのクライアントライブラリを開発中という。

 Redisはmemcachedのようにキーと値の対を、すべてメモリ上に保存する。ただし、memcachedと異なり、同時に一定量以上の変更が加えられた場合には、非同期でディスクにも書き出すことで永続性を実現する。デフォルトでは15分間に1つ以上、5分間で10個以上、1分間に1万個以上のキーが変更されるとディスクに書き出す。設定ファイルで書き出しタイミングは変更できる。Redisに障害があった場合、ディスクに書き出される前の変更データは失われることになる。Redisはインメモリデータベースの高速性と、ディスクに書き出す一般的なデータベースの中間的な位置付けといえそうだ。

 memcachedとのもう1つの違いは、値として指定できるデータの型が文字列以外にも、文字列のリストや、セットが利用できること。リストであれば、n番目に要素を追加したり、push/popでスタック的に操作することができる。また、セットであれば2つのセットの共通部分を抜き出したり、和集合を生成するといった集合演算のような複雑な操作が可能という。

 値のインクリメント/デクリメントを含むデータ更新やスタック操作は、いわゆるアトミックな操作となっていて、処理中の操作は外部からは見えない。このため、並列・分散処理の環境でロックが不要で、複数サーバから1台のRedisサーバの値を同時に操作する際にもロックする必要がないという。例えば巨大なテキストファイルに含まれる単語数をカウントする処理で、ファイルを分割して複数サーバでチャンクを処理、その結果をRedisサーバに集約するといったことが容易にできるという。

【記事初出時、タイトルおよび本文に「グーグルが発表」と書いてありましたが、これは誤りでした。ソースコードのホスティングの場がGoogle Codeであっただけで、グーグル社との関係はありません。関係者並び読者の皆様にご迷惑をおかけしました。お詫びして訂正します。本文は修正済みです。2009年2月27日6時51分】

関連リンク

(@IT 西村賢)

情報をお寄せください:

Database Expert フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

キャリアアップ

- PR -

注目のテーマ

- PR -
ソリューションFLASH

「ITmedia マーケティング」新着記事

「バンダイチャンネル」が実践する解約防止術
サブスクリプションビジネス成功の第一歩はユーザーの解約防止にあり。その実践事例を「...

成長戦略としての「D2C」
「ITmedia マーケティング」では、気になるマーケティングトレンドをeBookにまとめて不定...

リモートワークや時差出勤の導入状況を企業IPアドレスへの接続状況で読む――インティメート・マージャー調査
ゴールデンウイーク明けは全国的に企業IPアクセス数の割合が増えています。ということは...