2019年新卒研修で使った資料です。 内部実装の雰囲気を感じとりながら、Redisについて理解を深める研修を行いました。 以下の内容について学びました。 1. Redisの概要 2. 社内での利用方法 3. 正しい用法用量 Redis についての前提知識は必要としていません。C言語の基礎的な知識は前提とします。
![アルゴリズムとデータ構造から理解するRedis / Learn Redis from Internal Algorithms and Data Structures](https://cdn-ak-scissors.b.st-hatena.com/image/square/020a7873ce5a95ee3199fbcd77b9abb0cf89b161/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2F96002f59f1e74d52b016775de06621f3%2Fslide_0.jpg%3F12400557)
クラスターを組んでいない Elasticache Redisの場合 バージョンアップの流れ バージョンアップを実行 全ノードの CacheClusterStatus が modifying になる レプリカノードが順次バージョンアップされる 全レプリカノードのバージョンアップが完了 レプリカノードがプライマリに昇格し、プライマリエンドポイントはその新ノードのIPアドレスを返す 旧プライマリノードがバージョンアップされる 全ノードの CacheClusterStatus が available になる Redis インスタンスの作成 クラスターモードを無効 Multi-AZ with Auto-Failover を有効 レプリカ数を1 Redis バージョンを 4.0.10 で作成します。 エンドポイント 非クラスターモードでは、書き込みはプライマリノード1台に対してのみ可能です。 このノー
こんにちは、アルバイト事業部の春日です。アルバイト求人サイトである マッハバイト のサーバーサイドを担当しております。 Redis Gem を Cluster Mode に対応させる Pull Request を出す機会に恵まれたため、本日は振り返りも兼ねてそれについてお話させていただければと思います。 背景 Ruby on Railsで実装しているマッハバイトでは、将来的なユーザー増加を見越して2015年03月頃にRedis ClusterをSession Storeとして使い始めました。 当時はまだRedis3.0が出たばかりだった記憶があり技術選定時に twemproxy なども検討されていました。 Reshardingなどもできる運用ツール もあってRedis本体がNativeでサポートしている、という理由でRedis Clusterを採用しました。 しかしRedis3.0で初めて
Tweet やんごとなき事情により、CentOS 6 が動く古いサーバをつぶしていくというようなことを普段やっていて、Cent OS 6 上で動く Redis をどのように移行しようか、ということを最近考える機会があったので、このエントリにメモしておきます。 オンプレミスではなく AWS の EC2 や ElastiCache に寄せていくということと、Redis を利用するアプリケーションサーバでは Ruby on Rails が動いているという暗黙の前提があるため、そのつもりで読んでいただければと思います。 無停止で Redis サーバをマイグレーションすることの困難さ Ubuntu 16.04 用に Redis サーバを準備するのはそれほど大変な作業ではありません。キャパシティプランニングさえ終えれば、あとはちょっと Itamae や Chef のレシピを書いてやるだけ、です。 問題
ちなみに更新内容的には、以下のような感じでした。 4.0.3「PSYNC2のバグ直したよ」 4.0.4「PSYNC2のバグ修正いくつか、4.0.3に入れ忘れてたわ」 4.0.5「4.0.4のバグ修正、壊れてたわ」 というわけで、4.0系はまだ使わないほうがいいです。 その2 Redisのログは何を監視している? Redisのログは非常に説明的で、あまりシステムによる監視に向いてません。 とりあえず、以下は正規表現で雑にひっかかるようにしています。 AOF出力関連 Asynchronous AOF fsync is taking too long (disk is busy?). Writing the AOF buffer without waiting for fsync to complete, this may slow down Redis. AOF出力時にI/O性能が足りない時に
Understanding the Top 5 Redis Performance Metrics Using critical Redis metrics to troubleshoot performance issues Conor Branagan, Software Engineer, Datadog Patrick Crosby, Product Marketer, Datadog Understanding the Top 5 Redis Performance Metrics © 2013 Datadog Inc. 2 Introduction ....................................................................................................................
Performance At Scale With Amazon Elasticache は Amazon が書いている Elasticache に関するドキュメントなのですが、Elasticache に限らずインメモリキャッシュを使用するときのベストプラクティスを学ぶ参考になりそうだったので、ざっと読んでまとめてみました。 Elasticache 自体は ストレージエンジンとして Memcached と Redis を用意していますが、ここでは主に Redis に注目しています。 Abstract キャッシュ用途としてのインメモリキーストア 頻繁にアクセスされるようなデータをキャッシュすればアプリケーションのパフォーマンスを上げることができる 正しく使えばスケールアップ時のコストを抑えることができる キャッシュだけではなく analytics や recommendation engin
Redis は便利なのですが、メモリが半分しか使用出来ないという問題が有ります。 非同期でファイルの書き込みを行う際に、メモリのスナップショット(コピー)を取るために、その分の空きメモリが必要なのです。 ここに Redis のソースコードのコメントを翻訳したものを置いておきます。 今回、メモリの空きが足りなくなったのは、準永続的な情報用のサーバと利用している物で、簡単に消すことは出来ませんでした。 そこで Redis のメモリダンプを解析し、利用していないキーの削除やデータ型の変更を行うことにしました。 メモリの解析 メモリダンプはそのままでは人間には理解不能なので、ローカルにdump.rdbファイルをコピーし、 Rdbtools を利用してCSVに出力し、そこから必要なデータに整形しました。 $ rdb -c memory dump.rdb > redis_memory.csv # バイ
あらすじ AWS上にWEBサービスを構築しておりました所、徐々に全体的なレスポンスが悪化していっておりました。よくあることです。計測してみた所、サマリ結果をキャッシュしていたElastiCacheのRedisがネックになっていた事が発覚しました。 更に詳細に計測してみると、どうやらRedisに対するSETになんか8秒ほどかかっている模様、おっと、何かがおかしい。 現場は騒然とし始めます。一刻も早くこのボトルネックを潰さないと大変なことになる、こうして我々の残業はスタートを切りました。 こうした試行錯誤の顛末が、誰かの役に立てばと思ってこの記事を残します。 結論先取 ElastiCacheの弱いインスタンスはネットワーク帯域が狭い ElastiCacheのデフォルトのインスタンスが r3.large なのには意味がある キャッシュをしたけりゃ現金を払え GETしか絞れないSLOWLOG、そし
Redisは多彩なデータ構造をもつ1インメモリDBであり、昨今のWebアプリケーションのデータストアの一つとして、広く利用されている。 しかし、一方で、性能改善のための手法を体系的にまとめた資料が見当たらないと感じていた。 実際、最初にCPU負荷が問題になったときにどうしたものかと悩み、調査と試行錯誤を繰り返した。 そこで、この記事では、自分の経験を基に、RedisサーバのCPU負荷対策を「CPU負荷削減」「スケールアップ」「スケールアウト」に分類し、パターンとしてまとめる。 背景 RedisのCPU負荷対策パターン CPU負荷削減 multiコマンド Redisパイプライニング Luaスクリプティング Redisモジュール(夢) スケールアップ スケールアウト 参照用スレーブ 垂直分割 水平分割 Redis Clusterによる水平分割 その他 スライド資料 あとがき 参考資料 背景 R
Performance at Scale with Amazon ElastiCache July 2019 Notices Customers are responsible for making their own independent assessment of the information in this document. This document: (a) is for informational purposes only, (b) represents current AWS product offerings and practices, which are subject to change without notice, and (c) does not create any commitments or assurances from AWS and its
Overview of data types supported by Redis Redis is a data structure server. At its core, Redis provides a collection of native data types that help you solve a wide variety of problems, from caching to queuing to event processing. Below is a short description of each data type, with links to broader overviews and command references. If you'd like to try a comprehensive tutorial for each data struc
Horizontal scaling with Redis Cluster Redis scales horizontally with a deployment topology called Redis Cluster. This topic will teach you how to set up, test, and operate Redis Cluster in production. You will learn about the availability and consistency characteristics of Redis Cluster from the end user's point of view. If you plan to run a production Redis Cluster deployment or want to understan
Redisの作者antirez氏自らによる、memcachedとRedisの長所短所の比較。特に、Redisを単なるキャッシュ用アプリケーションとしてmemcachedと比較することの間違いと、それぞれの向いている使用方法についての私見。 あなたが私と面識があるなら、私が競合製品があることが悪いと考える人間でないことはご存知でしょう。ユーザーに選択肢があることは本当にいいことだと思っていますし、だからこそ他の技術とRedisを比較するようなことはほとんどしませんでした。 しかし、最適なソリューションを選ぶためには、ユーザーは正しく情報を持たねばならないのも確かです。 この記事を書くのは、有名なライブラリであるSidekiqの作者として知られるMike Perhamが、Redisのバックエンドストレージとしての使い方を書いた記事を読んだのがきっかけです。従って、私はMikeがRedisに「反
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く