Redis4.0 RC1がリリースされました
新しいレプリケーションの仕組み(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"