Redis

rack-attack gemで保存先にRedisを指定する

https://github.com/kickstarter/rack-attack という便利なgemがあります。 特定のアクセスのみを許可するSafelists機能や、特定のアクセスを弾くBlocklist機能や n秒間にn回アクセスされたらアクセスを弾くThrottles機能、特定のアクセスを記録するTracks機…

RedisClusterにslaveを追加したとき、masterとslaveでキーの数が違う

以前、Redis Clusterにslaveを追加したときmasterとslaveでキーの数が違う現象に合いました。 masterの方がキーが多くslaveの方がキーが少ない。 その時はどうしてそんなことになるのか分からなかったのですが、調査して分かりました。 結論は、 slaveを追加…

RedisClusterで"Redis::CommandError: CLUSTERDOWN The cluster is down"エラーが頻発する場合はcluster-node-timeoutが短いせいかも

RedisClusterでアプリケーション側で"Redis::CommandError: CLUSTERDOWN The cluster is down"エラーがでたけど Redisのログにはcluster downのログがはかれていなくて、原因が分からなかった。 あとたまに、Redisのログにごく短い間隔で Cluster state chan…

Redis Clusterへのデータ移行

Redis Clusterはマスターがダウンしたら自動でfailoverしてくれるためとても便利です。 通常の、つまりMaster/Slave構成のRedisから、Redis Clusterへ移行したい人もいるかと思います。 しかし通常のRedisインスタンスからRedis Clusterへデータ移行するには…

Redis Clusterで出来ないこと

Redis Clusterを触ってて、おおお…マジか…と思ったことがいくつかあった。 スレーブからGETできない 通常のRedis のレプリケーションだとスレーブからGETできますが、 Redis Clusterだとできません。マスターからGETしろとメッセージがでます。 これはおそら…

Redis Clusterの操作を簡単にするredis-trib.rbの使い方

Redisは3.0から Redis Cluster というクラスタが組める機能が追加されました。 コマンドにも"cluster"から始まるコマンドが追加されています。 http://redis.io/commands#cluster これらのコマンドを使えばクラスタの操作ができるわけなんですが、 今日はred…