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分】
関連リンク
関連記事
情報をお寄せください:
TechTargetジャパン
- やはりSELECT文は永遠のテーマです (2012/2/7)
Database Expertフォーラムの2012年1月のアクセスランキングをお届けします。定番の記事を一気に追い抜いてあの記事が…… - SELECT文で取り出したデータを加工して表示する (2012/1/25)
SELECT文で取り出したデータを対象に四則演算する方法など、データを見やすくする方法を解説します - 2012年は私たちが勉強会を盛り上げる! (2012/1/23)
2011年12月、データベース業界初の女子会が発足しました。そこで、女子会を盛り上げていってくれそうな2人にお話を伺いました - 複数の条件を指定してSELECT文を実行する (2012/1/13)
複数の条件を指定してSELECT文を実行する方法と、条件指定に必要な論理演算子、比較演算子の役割を解説します
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -
