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

「メイド・イン・アフリカ」を世界へ ガーナの村を支援する日本人女性の奮闘――SKYAH 原ゆかり氏
新市場の創造を目指す挑戦者を紹介します。

平成の消費に影響を与えたものは「スマホ」「ネット通販」「PC」――博報堂生活総合研究所「消費1万人調査」
博報堂生活総合研究所が実施した「消費1万人調査」より、「平成の消費観・消費行動に影響...

結果の出ないWebサイトをリニューアルする前にまずやるべきこと
「Webサイト育成」についての連載です。