タグ

redisに関するd_animal141のブックマーク (35)

  • Sidekiq について基本と1年半運用してのあれこれ - まっしろけっけ

    はじめに 実際に運用していた時に非同期にしていた主な処理は下記のようなものがあります。 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

    Sidekiq について基本と1年半運用してのあれこれ - まっしろけっけ
  • Redisとキャッシュについて理解を深めてみた。 - Qiita

    業務でキャッシュに関わる部分を見る機会があり、せっかくなのでキャッシュについて理解を深めてみました。そのまとめです。 Redisとは Redisは「REmote DIctionary Server」の略です。githubのリポジトリ→redisのリポジトリ (最近開発者がRedisの開発から退く意向を示す投稿をしていました。そのため、Redisのリポジトリが作者の個人リポジトリからredis-ioリポジトリに移っています。) Redisはin-memory databaseであるが故に高速アクセスが可能であり、client/serverモデルを採用しているが故に複数のクライアントからアクセスすることが可能です。またreplicationがサポートされているなどscalableであるという特徴も持っています。 投稿では以下の2点を見ていきます。 in-memory database rem

    Redisとキャッシュについて理解を深めてみた。 - Qiita
  • 【入門】Redis - Qiita

    背景 現在、自社サービスで Redis を利用していることもあり、あらためて勉強、まとめてみました。 今回は、Redis の概要・特徴・設定・レプリケーションの基礎的な部分を記載しています。 ※間違いなどありましたら、ご指摘いただければ幸いです。 Redis の概要 この章では Redis の概要を記載しています。 Redis = REmote DIctionary Server の略です。 Redis は、Key-Value型 の NoSQL データベースです。 Redis は C 言語で書かれており、Open Source (BSD licensed) で開発されています。 Redis は Client-Server モデル を採用した インメモリデータベースです。 すべてのデータをコンピュータのメインメモリ上に展開しながら動作します。 他にも、インメモリDB として、 memcach

    【入門】Redis - Qiita
  • ActionCableとロードバランサーを併用する時のRedisの設定 - Qiita

    こんにちは。 Cryptogamesで働いているじゅん(@BoNingennnN)です。 最近仕事でAcitionCableを使う機会がありました。 RailsでWebsocket通信を行うものを実装するなら、ActionCableを使うのがデフォルトです。 リアルタイムのメッセージなどの機能を実装する時に使うことが多いと思います。 ActionCableは若干とっつきにくい部分もありますが、使い慣れてしまえば基的な部分で詰まることはあまりないと思います。 ですが、Redisの設定ではかなり苦しんだので、今回はそのことを書いていきます。 (ちなみにQiitaには初めて投稿します!) 番環境でActionCableを使うなら、Redisを使う必要がある。 「ActionCableを使ってみた」というような記事がいくつかあるかと思いますが、その多くではRedisを使っていません。 これは、

    ActionCableとロードバランサーを併用する時のRedisの設定 - Qiita
  • Amazon ElastiCache Redis の各パラメータについてまとめてみた | DevelopersIO

    おはようございます、加藤です。Amazon ElastiCacheのRedisを利用する際に、どのように設計・設定すれば良いのかをまとめてみました。 Redisとは RedisはOSSのインメモリ型キーバリューストアです。 ちなみに名称はREmote DIctionary Server の略語です。 Redisを扱うのが初めての方はまず下記のリンク先を読むことをおすすめします。 Redis とは? - Amazon ElastiCache(キャッシュ管理・操作)| AWS ElastiCache for Redisとは AWSによって提供されるマネージドなRedisです。Redisを使用してる既存のアプリケーションならばほとんど変更なしに移行することが可能です。 キャッシュノードの障害の自動検出と復旧。 障害が発生したプライマリクラスターの、レプリケーションをサポートする Redis クラ

    Amazon ElastiCache Redis の各パラメータについてまとめてみた | DevelopersIO
  • ElastiCache + Redis に出てくる概念と、クラスタモードごとの違い - nyamadoriの日記

    はじめに Web サイト表示速度向上の一環として、仕事で、ElastiCache + Redis によるキャッシュ層を導入する。 導入にあたり、ElastiCache + Redis で利用するノードタイプ(インスタンスタイプ)や、制限などの事前調査が必要になった。 ElastiCache + Redis は、ノードタイプやクラスタの種類によって、機能サポートが異なり、混乱するところが多々あったため、AWS のドキュメントを参考に、分かりにくいところをまとめた。 これから導入する段階なので、AWS のドキュメントの内容以上のことは書いていません。 運用についてとか、ハマったところなどの記述はありません。 内容におかしいところがあれば教えてください 概念 実際に使うかどうかに関わらず、シャードやレプリカという用語がバンバンでてくるので、まとめる。 参考: http://docs.aws.am

    ElastiCache + Redis に出てくる概念と、クラスタモードごとの違い - nyamadoriの日記
  • Redis のメモリが足りなくなった時にどうやってチューニングしたか - Qiita

    Redis は便利なのですが、メモリが半分しか使用出来ないという問題が有ります。 非同期でファイルの書き込みを行う際に、メモリのスナップショット(コピー)を取るために、その分の空きメモリが必要なのです。 ここに Redis のソースコードのコメントを翻訳したものを置いておきます。 今回、メモリの空きが足りなくなったのは、準永続的な情報用のサーバと利用している物で、簡単に消すことは出来ませんでした。 そこで Redis のメモリダンプを解析し、利用していないキーの削除やデータ型の変更を行うことにしました。 メモリの解析 メモリダンプはそのままでは人間には理解不能なので、ローカルにdump.rdbファイルをコピーし、 Rdbtools を利用してCSVに出力し、そこから必要なデータに整形しました。 $ rdb -c memory dump.rdb > redis_memory.csv # バイ

    Redis のメモリが足りなくなった時にどうやってチューニングしたか - Qiita
  • Redisにおけるデータの永続化 | TECHSCORE BLOG | TECHSCORE BLOG

    こんにちは、鈴木です。 Redis におけるデータの永続化についてです。 RDB と AOF Redis におけるデータの永続化には 2 つの方式があります。 一つは RDB ファイル(RDB = Redis DataBase だと思います)に書き出す方式で、あるタイミングのスナップショット(フルダンプ)です。 もう一つは更新系のクエリが逐次追記される AOF (Append Only File) です。 RDB と AOF は両方を有効にすることができ、その場合は RDB と AOF の両方が出力されますが、Redis 起動時には AOF からデータが復元されます。 RDB を保存する RDB ファイルを保存するには、save ディレクティブで保存するタイミングを指定します。

  • RedisにおけるRDBファイルのバックアップ | TECHSCORE BLOG | TECHSCORE BLOG

    こんにちは、鈴木です。 Redis におけるバックアップとリストアについて調べました。 データを永続化する方法については「Redisにおけるデータの永続化」で調べました。 RDB ファイルのバックアップ RDB ファイルでのバックアップ手順は以下のようになると思います。 BGSAVE コマンドを実行する(非同期での RDB ファイルの生成が開始される)。 RDB ファイルの生成が完了するまで待機する(完了したかどうかは、LASTSAVE コマンドの結果が変化したことや、RDB ファイルの i-node 番号が変化したことで判別可能です)。 (redis-check-dump で生成された RDB ファイルに問題が無いことを確認する。) RDB ファイルをコピーする(別サーバなど Redis が動作するサーバがクラッシュしても安全な場所に保管する)。 上記を一日一回など、定期的に実行します。

  • Redisにexpireを設定するタイミングに注意 - Qiita

    Redisのキーにexpireを設定して分散環境でタイムアウト処理を行うときに以下のようなコードにしていると、ごく稀にタイムアウトしないバグが発生します。 require 'redis' ttl = 60 # 1分間でexpireさせる redis = Redis.new redis.set('key', 'val') redis.expire('key', ttl)

    Redisにexpireを設定するタイミングに注意 - Qiita
  • Redisデータ永続化の種類とサービス稼動時の切り替え注意点 - Qiita

    前提 以下は Redis 2.8 以降を前提としています Redisのデータ永続化の種類 Redisではデータの管理手法として3種類あります。 ・メモリでデータを管理する方式(揮発性ベース) ・特定のタイミングでデータをディスクに保存する方式(RDBベース) ・随時データをディスクに保存する方式(AOFベース) 'RDB'や'AOF'とすることでRedisを再起動してもはファイルからメモリにデータを読み込みなおすためデータの永続化がはかれる。というものです。 パフォーマンス劣化などの弊害もあるため、提供するサービスの内容とメリデメを見て選択することになります。 揮発性ベース データをすべてメモリ内で保有して処理します。 Redisの再起動でデータがすべてロストしてしまうので、これが許容できるケースで利用します。 説明

    Redisデータ永続化の種類とサービス稼動時の切り替え注意点 - Qiita
  • プロダクションで2年間Redis Clusterを運用してみて - Qiita

    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

    プロダクションで2年間Redis Clusterを運用してみて - Qiita
  • redis-reducing-memory-usage

  • Redisのsetnxを使ってマルチサーバ環境での Web API ロック機構を実現する | DevelopersIO

    「これ、同時にリクエスト飛んできた場合って、どうなるの?」 「2つ登録されちゃいますね…」 はじめに Web APIは、リクエストを受け、処理を終えた後レスポンスを返します。モバイルアプリやウェブアプリとセットで開発しているとつい忘れがちになってしまいますが、同時に同じリクエストが飛んできた場合にどういう挙動をするか ということは常に考慮しておかなくてはなりません。「UI上同時にリクエストが送れないから問題なし」では Web APIの設計が不十分です。別の端末から同時に同じリクエストを送ることも可能ですので、UIとは切り離して考えるべきです。 さて、この状況、GETリクエストについては大きな問題にはならないでしょう。いくらリクエストが来てもサーバ側の状態に変化はないので、負荷対策だけしておけば大丈夫そうです。問題はPUTリクエストやPOSTリクエストといった、サーバ側のリソースに変化を及ぼ

    Redisのsetnxを使ってマルチサーバ環境での Web API ロック機構を実現する | DevelopersIO
  • Developing a Go app with Docker Compose – blindside.io

    Developing a Go app with Docker ComposeWriting Go applications in an isolated environment with Docker comes with some great advantages. You get a clean GOPATH, the bare essentials for developing, and you can easily change which Go version you’re developing against. In this quick tutorial, we’re going to show you how to structure a Go application with Docker Compose as your development environment.

  • Docker Compose を使って Sinatra と Redis コンテナを 1 コマンドで立ち上げる - Qiita

    概要 Docker公式オーケストレーションツールの 1 つ Docker Compose を使って Redis と Sinatra からなるアプリケーションを動かしてみるという話。 Redis, Sinatra はそれぞれ別のコンテナとして動かす。通常であれば docker run を 2 回実行したり、実行時に -e や -p などあれこれオプションを付ける必要があるが、Compose を使うと 1 コマンドでサクッと動かせる。 Hello World サンプルアプリケーション

    Docker Compose を使って Sinatra と Redis コンテナを 1 コマンドで立ち上げる - Qiita
  • Redis Cluster入門 - Qiita

    概要 RedisClusterのチュートリアルを読みつつ疑問を解消していく。 Redis自体がシンプルな仕組みなこともあり、ドキュメントを読むだけでおよそ理解できるものと思われるので、下手な追加説明はあまりしていません。 以下、引用の箇所は筆者が和訳したもの、それ以外が筆者のコメントになります。 Redis cluster tutorial このドキュメントはRedisClusterについて書かれています。 distributed systemのコンセプトを簡単にまとめたものになります。 どうやってクラスタを構成し、テストし、運用するかを要点を絞ってまとめたものです。詳細はspecの方をご確認ください。 しかし、可用性と一貫性についての説明も試みています。 プロダクションで使うにはspecificationも読むことをおすすめしますが、とりあえず試したい方はこちらをお読み下さい。 Redi

    Redis Cluster入門 - Qiita
  • Google

    世界中のあらゆる情報を検索するためのツールを提供しています。さまざまな検索機能を活用して、お探しの情報を見つけてください。

  • トランザクション — Redis Documentation (Japanese Translation)

    トランザクション¶ MULTI, EXEC, DISCARD および WATCH は Redis におけるトランザクションの基です。これらは、複数のコマンドの実行をひとつのステップで行えるようにします。その際、2 つの重要な点が保証されます。 トランザクション中のすべてのコマンドは直列化され、順に実行されます。他のクライアントにより発行されたリクエストが、Redis トランザクションの 途中に 入り込むことはありません。このことは、コマンド群がひとつの隔離されたオペレーションとして実行されることを保証します。 すべてのコマンドが実行されるか、ひとつも実行されないかのいずれかであり、すなわち Redis のトランザクションはアトミックです。 EXEC コマンドはトランザクション中の全コマンドの実行のトリガです。もし、クライアントがトランザクションの途中で、 MULTI [訳注: EXEC

  • redis(predis)でパイプライニング(pipelining)を使って高速にコマンドを実行する - Qiita

    redisにパイプライニングといって複数のコマンドを一括実行する機能があります。 これを使うことでひとつひとつコマンドを実行するよりも圧倒的に高速な実行が可能です。 僕の環境ではhset(),expire()を1万回繰り返して確認したところ約5倍の性能差がありました。 クライアントライブラリによってはmulti/execのオプションなどでパイプラインを実行するものもあるため、自分が使う クライアントライブラリにおけるパイプライン処理の実装方法をしっかり確認しておく必要があります。 predisというクライアントライブラリではpipeline()メソッドというパイプラインのためのメソッドが用意されており これによって取得できるPipelineクラスのインスタンスを使ってコマンドを指定します。 以下はpredisで1万回のhset/expireをパイプラインで処理するコード例です。 $redi

    redis(predis)でパイプライニング(pipelining)を使って高速にコマンドを実行する - Qiita