Edited at

Redis 4.0の新機能 (RC1 is out!)

More than 1 year has passed since last update.

Redis4.0 RC1がリリースされました

http://www.antirez.com/news/110


新しいレプリケーションの仕組み(PSYNC2)

レプリケーションの仕組みが新しくなります。

マスターのインスタンスが同一でなければ、スレーブがレプリケーションをいったん停止して再開したときに、停止時点からの

データの同期ができない(全データの同期が必要となる)という制限を取り除くものです。

これによってスレーブがマスターに昇格した場合などに、効率的に同期できるようになります。

詳細(英文):

https://gist.github.com/antirez/ae068f95c0d084891305


LFU

キャッシュアルゴリズムとしてLFU(Least Frequently Used)が使えるようになるようです。

参照回数に基づくデータの維持ができるようになるので、キャッシュとして使う場合に、適したケースではキャッシュヒット率をあげられます。


動的ロード可能な拡張モジュール

Redis 4.0からは動的ロードによってモジュールを読み込み、Redisの機能を拡張することができます。

モジュールを使って新しいデータ型やコマンドを実装することができます。

例えばRedis作者自身によるニューラルネットワーク機能はモジュールによって実装されています。

https://github.com/antirez/neural-redis

またサンプルとしてhelloworldモジュールもrepository内にあります。

https://github.com/antirez/redis/tree/unstable/src/modules

詳細(英文):

http://antirez.com/news/106

https://github.com/antirez/redis/blob/unstable/src/modules/TYPES.md


RDB-AOF mixed format

AOFファイルの先頭にRDBのデータを保持したRDBとAOFを合体させたフォーマットが使えるようになります。

aof-use-rdb-preamble というオプションで設定できます。

RedisではAOFファイルが肥大化したときやBGREWRITEAOFコマンドを実行したときにAOFファイルのサイズを小さくするための最適化処理が実行されます。

このフォーマットを使うことで最適化後のファイルサイズの削減やロード時間の短縮などができるものと思われます。


Background Deletion

delコマンドやexpireの期限によってオブジェクトの解放が必要になったときに、即座に解放処理を行わずに、バックグラウンドスレッドに解放処理を移譲する機能のようです。

下記の3つのオプション追加が確認できるので、background deletionの有効・無効はオブジェクトの解放の種類ごとに設定で決められるようです。

lazyfree-lazy-eviction

lazyfree-lazy-expire

lazyfree-lazy-server-del

関連ソース:

https://github.com/antirez/redis/blob/unstable/src/lazyfree.c

https://github.com/antirez/redis/blob/unstable/src/bio.c


MEMORY

MEMORYコマンドが追加されています。

いくつかサブコマンドがあり、メモリの使用状況などを確認できます。

127.0.0.1:6379> MEMORY HELP

1) "MEMORY USAGE <key> [SAMPLES <count>] - Estimate memory usage of key"
2) "MEMORY STATS - Show memory usage details"
3) "MEMORY PURGE - Ask the allocator to release memory"
4) "MEMORY MALLOC-STATS - Show allocator internal stats"