2015年4月10日金曜日

Redisマスターはexpiresしたデータをスレーブに送信しない


参考資料
http://fnordig.de/redis-faq/
http://grokbase.com/t/gg/redis-db/1254g6eebv/sync-not-copying-all-keys
INFO keyspace shows a different number of keys on the slave than on the master
First: check that master and slave are in sync.
Do this by checking INFO replication of both master and slave and compare master_repl_offset and slave_repl_offset.
Next: Do you have a lot of expires?
On initial sync the slave will drop all already expired keys, while they may still be in the master instance (but are gone as soon as you try to fetch them).
(by: Moe, also sync not copying all keys)

マスターとスレーブでかなりキーの違いがあるな?と思ったら仕様でした。
期限切れのデータをスレーブに送信していないためです。
また、直接スレーブにexpiresをつけたデータを入れると、削除されずに残り続けるので注意。