Blog Archives

Redisのレイテンシを計測

やりたいこと Redis に TCP でコマンドを投げた時 DNS Lookup -> Initial Connection -> Request Sent -> Waiting(TTFB) -> Content Download というような流れで処理される。 この一連の流れで Redis の内部処理にかかった Waiting(TTFB) を除く通信の時間を計測する方法をメモ。 通信のレイテンシ Redis には疎通確認向けのコマンド PING がある。 クライアントがこのコマンドを実行すると、サーバーは PONG を返すだけ。 このコマンドに対してサーバー(Redis)の処理は極めて軽微なため、PING を実行してから PONG がかえってくるまでの時間をレイテンシとみなして計測するのが次のコマンド。 上の例で言えば 103 回 PING

Tagged with: ,
Posted in middleware

[AWS]マルチAZなElastiCache Redisの永続性についてメモ

Redis のデータを永続化させるには RDB : point in time スナップショット AOF : write ahead logging(WAL) の2種類の方法がある。 AWS ElastiCache Redis で Multi-AZ かつ自動フェイルオーバーなレプリケーショングループを組んでいる Redis での動きをメモ。 このようなレプリケーショングループの作り方は次のURLを参照 http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/AutoFailover.html Redis の RDB と AOF について RDB について RDB は point-in-time にダンプしたファイル。 通常の Redis であれば SAVE

Tagged with: ,
Posted in aws, middleware

AWS CLIを使ってマルチAZなElastiCache Redisのリードレプリカを作成する(お手軽版)

2014/10/24 の機能追加により、Redis はマルチAZ構成でノードを配置し、自動フェイルオーバーに対応した。 Multi-AZ Support / Auto Failover for Amazon ElastiCache for Redis http://aws.amazon.com/blogs/aws/elasticache-redis-multi-az/ 自分が知るかぎり、この機能が追加される前は異なる AZ に自前でクラスター配置しないとマルチAZにならなかったけど、機能追加後はマネージメントコンソールからボタンポチでマルチAZできるようになった。 このマネージメントコンソールの機能追加はコマンドライン aws cli (というかAPI)にも反映されているので、高可用性な Redis クラスターをサクッと構築してみる。 自前でゴリゴリやる手順は過去に書いた。 AWS CLIを使ってマルチAZなElastiCache Redisのリードレプリカを作成する https://siguniang.wordpress.com/2014/09/27/create-elasticache-redis-multi-az-read-replica/ 作業の流れ VPC & サブネットの作成 ElastiCache向けサブネットの作成 レプリケーショングループの構築 サブネットの作成 VPC に ElastiCache 用の異なる AZ

Tagged with: ,
Posted in aws

AWS CLIを使ってマルチAZなElastiCache Redisのリードレプリカを作成する

ゴール AWS ElastiCache は RDS と同じくマルチ AZ に対応している。 Q: Does Amazon ElastiCache for Redis support Multi-AZ operation? Yes, with Amazon ElastiCache for Redis you can create a read replica in another AWS Availability Zone. Upon a failure of the primary

Tagged with: , , ,
Posted in aws, database

AWS CLIを使ってElasciCache Redisのパラメーターを変更する

通常の Redis では、パラメーターは CONFIG コマンド経由で変更する。 http://redis.io/topics/config 一方で、マネージド・サービスである AWS ElasciCache Redis では、運用にインパクトを与える CONFIG のようなコマンドは利用できないようになっている。(redis.conf で rename-command CONFIG “”のように設定すれば良い) Restricted Commands In order to deliver a managed service experience, ElastiCache restricts access to certain cache engine-specific commands that require advanced privileges. …

Tagged with: , , , ,
Posted in aws, database

Redisでアクセスランキングを実装

ニュースサイトのサイドメニューでよく見かける「アクセスの多かった記事」のようなランキングを Redis のデータ型 Sorted Set で実装する方法をメモ。 東洋経済の例 Redis の Sorted Set を使ったアクセスランクの表現 Redis のデータ型 sorted set は文字通り順序付けられた集合。 key 単位で集合を定義でき、各メンバーはスコアを持ち、スコアによって集合内で順位付けられる。 メンバーを記事、スコアをアクセス数とみなして、アクセスランクを表現する。 日別ランキングであれば下図のようになる。 週別ランキングであれば下図のようになる。 スコアの大きい順(=アクセスの多い順)に並べればアクセスランキングの完成となる。 Sorted Set の操作 次にアクセスされた時の Sorted Set の操作を考える。 キーは YYYYMMDD で持ち、アクセスされるたびに、記事のスコアを1増やす。 スコアを明示的に指定してメンバー追加するときは ZADD を使って ZADD key score member

Tagged with: , ,
Posted in database

Redisで最新更新されたN件を実装

たとえば最近更新されたN件を表示させるには 最近更新したアイテムほど上位に表示 下位にあるアイテムも、更新すれば最上位に表示 同じアイテムは重複して表示しない N件を超えると古いものから順に破棄 といったことが必要になる。 このデータ構造を Redis のデータ型 Sorted Set で実装する方法をメモ。 Sorted Set を少し触ってみる Redis のデータ型 sorted set は文字通り順序付けられた集合で Z で始まるコマンドを使ってデータを操作する。 ZADD key score member のシンタックスで集合のメンバーを追加 計算量は O(log(N)) myzset 集合のメンバーを score でソート メンバー baz のスコアを3から1に変更 myzset 集合のメンバーを score のランキング順で再ソート

Tagged with: ,
Posted in database
Archives