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 マーケティング」新着記事

天候と位置情報を活用 ルグランとジオロジックが新たな広告サービスを共同開発
ルグランとジオロジックが新たな「天気連動型広告」を共同開発した。ルグランが気象デー...

“AI美女”を広告に起用しない ユニリーバ「Dove」はなぜそう決めたのか
Unilever傘下の美容ケアブランド「Dove」は、「Real Beauty」の20周年を機に、生成AIツー...

有料動画サービス 34歳以下では過半数が利用経験、4割は1日1回以上利用
「ニールセン・ビデオコンテンツ アンド アド レポート 2024」を基に、テレビ画面での動...