Redis/memcached
背景 ryuichi1208.hateblo.jp この前描いてた記事のスピンオフ的な記事でキャッシュスタンピード対策をPythonで実装するとしたらどんな感じかなと思って調べてみた記事。内容としては以下の記事でやっていることの一部を掘り下げて考えてみたという感じです…
概要 マルチプロセス環境配下における、同一レコードへの書き込みが大量に発生するwrite heabyな環境でmemcachedの更新をどうやってatomicに行うかを考えた時に出てきたスピンロック的なことやってみた記事。 memcachedとは書いたもののCAS操作を提供してい…
Redisの計算量でO(N)以上の値のやつを抜粋。データ量が多いみたいなケースでこれらの操作がある場合はレビュー観点として見ていく必要がある。 O(N) BITCOUNT BITOP BITPOS CLIENT KILL CLIENT LIST CLUSTER ADDSLOTS CLUSTER COUNT-FAILURE-REPORTS CLUSTER…
mogile.web.fc2.com BRPOPとかBLPOPとかその辺の中身がどんなことやってるのか気になったので見てみたメモ。 ちなみにクライアント側は空のリストへBRPOPなりを実行するとstraceの結果よりread(2)でブロックする。ローカルの検証だがコネクションはこんな感…
概要 マルチプロセス環境配下における、同一レコードへの書き込みが大量に発生するwrite heabyな環境でmemcachedの更新をどうやってatomicに行うかを考えた時に出てきたスピンロック的なことやってみた記事。 memcachedとは書いたもののCAS操作を提供してい…
github.com memtier_benchmarkを使うとredisやmemcachedのベンチマークを取得できるらしく使ってみました。 dockerを使ってさくっとやってみます。-tでスレッド数-cでコネクション数-nでそれぞれのコネクションでどの程度のリクエストを投げるかを調整できま…
k8sのCronJobでワークキューパターンをやりたかったので立てた。 インストール パッケージからインストールすると、Redisサーバーが自動的起動します。 sudo apt-get update sudo apt-get -yV upgrade sudo apt-get install redis-server configとか /etc/re…
概要 スピンロックとは ビジーウェイトとは CASとは memcahcedにはCAS命令という research.sakura.ad.jp ABA問題
Redisで有名なKEYSは、特定のパターンにマッチするKeyを検索する手法。このコマンド自体はO(N)の計算量でありデータ数が多いとその他リクエストが詰まる。パターンマッチなんかやりたくても気軽に打てないコマンド。その計算量は耐えられない場合に使えるsca…
先日調べたソケットバッファに関する記事でmemcachedはどのくらいの値を設定してるのかと思って調べたのでメモ。 memcacehd.cでsetsockopt(2)を読んでいた static void maximize_sndbuf(const int sfd) { socklen_t intsize = sizeof(int); int last_good = …
ある関数内で複数回Redisとのやり取りをしている場合はpipelineを用いることで処理を一括でRedisに投げることができる機能。何が嬉しいかというとプロセス間通信によるRTTを減らすことができる。 以下はサンプル。many_get()とmpipe_line()が計測対象。デー…
String型 追加 set key value 削除 del key 取得 get key 複数追加 mset key value key value 複数取得 mget key key List型 末尾追加 rpush key value 先頭追加 lpush key value 末尾削除 rpop key 先頭削除 lpop key 全部取得 lrange key 0 -1 指定したint…
Redis 冗長化 & フェールオーバー環境を CentOS 6.x 上に構築する手順です 手順は3部構成となっており、本稿は Redis のインストール方法となります (その1):Redisのインストール (その2):Redisの冗長化 (その3):Redis-Sentinelによるフェール…