InfoQ Software Architects' Newsletter A monthly overview of things you need to know as an architect or aspiring architect. View an example
TL;DR Redis Clusterで運用は本当に楽になった でも、Redis 4.0は不安 Redis Clusterで一番怖いのはDisk IO 特にフェイルオーバーなどのFull Resync時 Redisとは? 高速なインメモリ型のKVS シングルスレッド 豊富なデータ構造(次ページにて詳細) 豊富な操作(次々ページにて詳細) 豊富なデータ構造 key-value型 hash型(key-field-value) set型(集合演算ができる) sorted set型(スコア付きset) 任意の型(redis modules機能) 豊富な操作 インクリメントや和集合などなど lua scriptも実行できちゃう シングルスレッドだからatomicな処理になる Redisの問題点 writeがスケールしない 気軽に停止できない サーバー再起動やバージョンアップなど Redis Clus
この記事は、はてなエンジニアアドベントカレンダー2016の12日目の記事です。 先日こういうツイートをしました。 Redisはキャッシュ用途のミドルウェアだと思わない方が良いと思う — songmu (@songmu) 2016年12月10日 言いたかったのは、Redisはキャッシュのためだけのミドルウェアだと誤解されがちなのですが実際はそうではないということです。実際、公式サイト を見に行くと以下の様なことが書かれています。 Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker. つまり、Redisは多彩なデータ構造を保持できるインメモリーのデータストアで、様々な活用法があり、キャッシュとして「も」使える、とい
2/18のデブサミ2016で発表したスライドになります。 著作権の関係上、ネタスライドは全て削除しております。 Developers Summit 2016【18-C-4】 株式会社アカツキ 駒井祐人 Read less
AWS News Blog Amazon ElastiCache for Redis Update – Sharded Clusters, Engine Improvements, and More Many AWS customers use Amazon ElastiCache to implement a fast, in-memory data store for their applications. We launched Amazon ElastiCache for Redis in 2013 and have added snapshot exports to S3, a refreshed engine, scale-up capabilities, tagging, and support for Multi-AZ operation with automatic fa
redis-traffic-stats という Redis のクエリーアナライザーを作りました。 https://github.com/hirose31/redis-traffic-stats redis-traffic-statsはtcpdump -wで書き出したpcapデータを解析して、以下のような統計を表示します。 総ネットワークトラフィック量と平均byte/sec 総リクエスト数と平均とピークのreq/sec コマンド毎のリクエスト数、総リクエスト数に占める割合、req/secを、リクエスト数が多い順に上位10コマンドを表示 コマンド毎の総転送バイト数、byte/secを、総転送バイト数が多い順に上位10コマンドを表示 コマンド別に、キー毎の総転送バイト数、byte/sec、リクエスト数、リクエスト数の割合、req/secを、総転送バイト数が多い順に上位10キーを表示 時間のかかっ
MERY のサーバーサイドエンジニアの @saidie です。 MERY では画像アップロードや記事投稿による検索インデックス作成などなど、ユーザからのリクエスト起因で起こる時間のかかる処理の多くを非同期に行うことでレスポンスタイムの向上に努めています。また、重複した非同期処理が並行して走ることによる スループット の劣化を分散ロックを用いた 排他制御 で緩和する取り組みなども行っています。 MERY は Ruby on Rails を用いて開発されており、非同期処理には Ruby 製の フレームワーク である Sidekiq を採用しています。この記事では Sidekiq と Redis による分散ロックを使って、同一の非同期処理が(あまり)重複しないような MERY の非同期処理システムについてご紹介します。 Sidekiq Sidekiq はクライアントサー バモ デルのマルチスレッ
以前Redisでスコアを複数設定できるランキングを作ってみたけど、 Githubの肥やしになっていてもあれなので、CPANizeしました。 あわせて、この実装のために作ったユーティリティモジュールも別モジュールとして公開しました。 Redis::LeaderBoardMulti Redis::Script Redis::Transaction Redis::LeaderBoardMulti 最初の基準で順位を決められなかった場合の第二基準が欲しいというときに使うモジュールです。 インターフェースがRedis::LeaderBoard互換になるように調整したので、 前回とインターフェースがちょっと変わっています。 se Redis; use Redis::LeaderBoard; my $redis = Redis->new; my $lb = Redis::LeaderBoardMulti
こんにちは、いっちーです。 一年とちょっと前にRedis::FastというモジュールをCPANizeしました。 PurePerlなRedisクライアントであるRedis.pmのXS版です。 Redis.pmとある程度互換性があり、Redisと書かれている部分をRedis::Fastに置換するだけで動きます。 はじめてのCPANizeでXSを使ったモジュールを公開するという暴挙にでたために、 公開後のバグ修正に頭を悩ませることになりました。 1年経って色々と溜まってきたので、この場を借りてまとめておきます。 minillaでXS&submodule Redis::FastはPurePerlなRedis.pmをフォークして、 バックエンドをhiredisに置き換えたものです。 CPANモジュールの作り方を調べてminillaを使うとよさそうというのがわかったので、 フォークするさいにminil
この記事は Perl5 Advent Calendar 2015 の7日目の記事です。昨日は、 @karupanerura さんの XSことはじめ でした。 今回は、RedisをPerlで扱う上での便利CPANモジュールを紹介します。大体 @shogo82148 無双になります。 Redis::Fast RedisクライアントはRedis::Fast一択です。Redis.pmが公式推奨のモジュールですが、これはPure Perl実装なのでパフォーマンスがそれほど良くありません。 Redis::FastはRedis.pm互換のインターフェースを持ったXSモジュールであり、内部的にはRedis公式のCクライアントであるhiredisのバインディングになっているので、安定していて使いやすいといえるでしょう。 my $redis = Redis::Fast->new; $redis->incr('
How Redis supports high availability and failover with replication At the base of Redis replication (excluding the high availability features provided as an additional layer by Redis Cluster or Redis Sentinel) there is a leader follower (master-replica) replication that is simple to use and configure. It allows replica Redis instances to be exact copies of master instances. The replica will automa
I’ve done some work on a design for a redis cluster lately, there’s a lot of info on the subject but it is in pieces and I am going to try and provide a complete document here for one of the ways to do this. Tools sentinel: redis’s own monitoring and availability tool, we will use it to monitor our master/slave nodes, sentinel will promote a slave to master when an issue arises. haproxy: a tcp loa
Redisの開発者として知られるSalvatore Sanfilippo(antirez)氏へのインタビュー。彼のキャリア、渡米せずにイタリアを拠点に活動している理由、オープンソースと企業の関わりについての意見、若者達へのメッセージ。 メディアによって作られたあらゆるステレオタイプにも関わらず、シリコンバレーで開発者として成功するのは至難の業だ。価値ある人間関係を作り上げる事ができ、その努力を見える形にできた一握りの最高のプログラマ達だけが、トップの会社で高賃金の仕事を得たり、立ち上げた会社への投資を受けたりする事ができる。そんな困難を乗り越え、しかもこの素晴らしいイタリアのシチリア島から出ずに製品を作り上げ、それに伴う評判を得る事を想像してみて欲しい。それはほとんど不可能事に近い。しかし、Redisの作者であるSalvatore Sanfilippo(antirez)は、それをやってのけ
2. Redis key features ❏ All datasets are stored in memory extremly fast read/write operations. ❏ Datasets can be saved to disk RDB and AOF - two ways to achieve persistence. ❏ Redis forks for long tasks Redis creates child processes. 3. RDB snaphots and AOF logs Persistence in Redis is a matter of configuration, balancing the trade-off between performance, disk I/O, and data durability. ❏ RDB is a
はじめに 実際に運用していた時に非同期にしていた主な処理は下記のようなものがあります。 iOS Android の push 通知の送信処理 ログの作成 様々な外部 API の呼び出し 非同期で更新しても問題ないデータの更新 Sidekiq is なに sidekiqは非同期処理を実現する gem 他にも Ruby で非同期処理を実現できる有名な gem には resque や delayed_job 等がある。 sidekiq.org Enterprise版等もありますが、 今回はOSS版を使用している前提でのお話しです。 他の非同期処理が可能な gem との簡単な比較 FAQ · mperham/sidekiq Wiki · GitHub この内容は結構真実を語っていることを最近知った Sidekiq Redis マルチスレッド リトライ処理あり おしゃれなダッシュボード Resque
この記事はmruby adevent calendar 24日目の記事です。 mrubyでRedisを操作するmruby-redisは以前から開発していたのですが、最近Pipelining対応のPRを頂きPipelining対応したのでそれの性能を確認してみました。また、その結果簡単に作れるようになった分散型インメモリジョブキューであるDisqueのmrubyクライアントであるmruby-disqueの紹介をします。 github.com github.com RedisとhiredisのPipelining mruby-redisはhiredisというCライブラリを利用しており、hiredisでは効率的にRedisとIOできるようにPipelining機能をサポートしています。RedisとhiredisにおけるPipeliningを簡単に説明すると、 通常のRedisアクセスはクライアン
この記事は tech kayac advent calendar 9日目の記事です。 インフラチームの @tkuchikiです。 最近検証した Redis::Fast の reconnect について紹介します。 Redis::Fast とは Redis::Fast は、弊社 @shogo82148 作の高速な perl の Redis クライアントです。 社内の perl で書かれたアプリケーションは、Redis を使う場合、ほぼこのモジュールを使っています。 なぜ reconnect を考慮しないといけないのか Redis Sentinel や ElastiCache for Redis を使い、フェイルオーバーできる冗長構成を組んだ場合のことを考えます。 Master がダウンした際、自動で Slave を Master に昇格してくれるためダウンタイムが短くて済みます。 この場合、
Redis は便利なのですが、メモリが半分しか使用出来ないという問題が有ります。 非同期でファイルの書き込みを行う際に、メモリのスナップショット(コピー)を取るために、その分の空きメモリが必要なのです。 ここに Redis のソースコードのコメントを翻訳したものを置いておきます。 今回、メモリの空きが足りなくなったのは、準永続的な情報用のサーバと利用している物で、簡単に消すことは出来ませんでした。 そこで Redis のメモリダンプを解析し、利用していないキーの削除やデータ型の変更を行うことにしました。 メモリの解析 メモリダンプはそのままでは人間には理解不能なので、ローカルにdump.rdbファイルをコピーし、 Rdbtools を利用してCSVに出力し、そこから必要なデータに整形しました。 $ rdb -c memory dump.rdb > redis_memory.csv # バイ
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? Redis不適切利用による問題は本番運用が始まってから顕在化することが多く、時限爆弾みたいな存在です。事前に防ぐにはコードレビュー段階で叩くしかありません。 Redisはスクリプト言語と相性が良く、適切に利用するとRDBと比較し驚くほど高速なプログラムを組むことができます。昨年尊敬する先輩にコードレビューで斧100本くらい(レビューコメント)投げられて血まみれになりつつ学んだことを、まとめて書いてます。概要は『消えても良いデータならRedis』 Redisのメモリが溢れたら... (この話は事実ではなくファンタジーです。) 深夜電話で叩
Redisの作者antirez氏自らによる、memcachedとRedisの長所短所の比較。特に、Redisを単なるキャッシュ用アプリケーションとしてmemcachedと比較することの間違いと、それぞれの向いている使用方法についての私見。 あなたが私と面識があるなら、私が競合製品があることが悪いと考える人間でないことはご存知でしょう。ユーザーに選択肢があることは本当にいいことだと思っていますし、だからこそ他の技術とRedisを比較するようなことはほとんどしませんでした。 しかし、最適なソリューションを選ぶためには、ユーザーは正しく情報を持たねばならないのも確かです。 この記事を書くのは、有名なライブラリであるSidekiqの作者として知られるMike Perhamが、Redisのバックエンドストレージとしての使い方を書いた記事を読んだのがきっかけです。従って、私はMikeがRedisに「反
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く