読者です 読者をやめる 読者になる 読者になる

diskstoreなるものが導入されるらしい

Redis

何気なくtwitterを見ていたら、Redisの将来のリリースで導入されるdiskstoreというオプションを知った。masterブランチにはすでにコードがあるので、cloneしてビルドすれば試してみることができる。

diskstoreが登場した背景はGoogle Groupのこのスレッドに詳しく説明されている。

直接スレッドを読んで頂いた方がいいのだが、一言で云うと「総データ量がメモリーよりも大きい時に、Redis 2.0で導入したVirtual Memoryというアプローチよりも実装が楽」という風に理解した。メモリーに載らないデータをディスクに書くなんてごくごく一般的なアプローチだと思うが、Virtual Memoryを実装した後にそこに戻ってくるとはカッコいいぞ、antirez!

まだ変更される可能性はあると思うが、diskstoreを使うにはredis.confのdiskstore-enabled, diskstore-pathを設定する。cache-max-memory, cache-flush-delayはあんまりよく分かっていない・・・

diskstore-enabled yes
diskstore-path /var/lib/redis/redis.ds
cache-max-memory 0
cache-flush-delay 0

実装は本当にシンプルで、spamというキーならば、spamSHA1のhexdigestがded982e702e07bb7b6effafdc353db3fe172c83fになるので、

$diskstore-path/de/d9/$db_ded982e702e07bb7b6effafdc353db3fe172c83f

のようなパスにキーに対応する値を書き込む。$dbは使用しているRedisのデータベース番号。

この実装は多分に実験的なものなんだろうけど、さてRedisはどういう方向に進化していくのだろうか・・・先程のスレッドを見ていると、「ストレージプラグインを変更できるようになったりしないかな」みたいな話の流れになっているな。