タグ

redisに関するt10471のブックマーク (22)

  • システム開発で得たRedis利用ノウハウ | フューチャー技術ブログ

    こんにちは。初投稿です。 2012年新卒入社の竹内です。入社当時を振り返るとOracle10g,11gを良く利用していおり、データモデリングなどテーブル設計が好きで、2018年4月ぐらいまでRDBとバッチに浸ってました。 さて、現在プロジェクトでRedisを使っているのですが、いままでRDB人間だっただけにKVSやRedisならではの特徴に四苦八苦してます。 苦しんだ分、色々な知見を得ることができているので、その内容をご紹介します! 対象者 Redisの業務システム導入を検討している方 RDBとRedisの違いを知りたい方 現場的なRedisの利用方法を知りたい方 書いてないこと データ型やコマンドなど、HelloWorld的に公式ドキュメントを見て得られる情報 インストールなど、Redisを利用できるまでの手順 フェイルオーバーやバックアップをはじめとする運用に関する内容 データ永続化に

    システム開発で得たRedis利用ノウハウ | フューチャー技術ブログ
    t10471
    t10471 2020/08/09
  • RedisサーバのCPU負荷対策パターン - ゆううきブログ

    Redisは多彩なデータ構造をもつ1インメモリDBであり、昨今のWebアプリケーションのデータストアの一つとして、広く利用されている。 しかし、一方で、性能改善のための手法を体系的にまとめた資料が見当たらないと感じていた。 実際、最初にCPU負荷が問題になったときにどうしたものかと悩み、調査と試行錯誤を繰り返した。 そこで、この記事では、自分の経験を基に、RedisサーバのCPU負荷対策を「CPU負荷削減」「スケールアップ」「スケールアウト」に分類し、パターンとしてまとめる。 背景 RedisのCPU負荷対策パターン CPU負荷削減 multiコマンド Redisパイプライニング Luaスクリプティング Redisモジュール(夢) スケールアップ スケールアウト 参照用スレーブ 垂直分割 水平分割 Redis Clusterによる水平分割 その他 スライド資料 あとがき 参考資料 背景 R

    RedisサーバのCPU負荷対策パターン - ゆううきブログ
    t10471
    t10471 2017/09/13
  • Redis Cluster のリシャーディングとorphaned masterの話 - CyberAgent エンジニア Advent Calendar 2014 2日目

    redis_cluster.md Redis Cluster のリシャーディングとorphaned masterの話 (2019/04 追記 こちらの情報は非常に古く、またRC版での結果となります。記録として残していますが参考になさらないでください) CyberAgent エンジニア Advent Calendar 2014 2日目です。 昨日に引き続き、秋葉原ラボの柿島が担当します。仕事ではHadoopクラスタの運用を中心に、秋葉原ラボのインフラ/ミドルウェアまわりを担当しています。今年はHadoop、mesos、Aerospikeと分散型のシステムを触る機会が多い1年でした。 この記事のテーマはRedis Clusterです。Redis Clusterが使えるようになるRedis 3.0.0は10月にRC1がリリースされました。2015年のQ1にstableリリースを目指しているようで

    Redis Cluster のリシャーディングとorphaned masterの話 - CyberAgent エンジニア Advent Calendar 2014 2日目
    t10471
    t10471 2014/12/03
  • Socket.IO, Redisを使用し各ゲーム間でプッシュ通知するシステム | 株式会社サイバーエージェント

    2. システム概要 homingは、アメーバピグ関連サービスのいずれかにログインしているユーザに対して、各サービスの通知情報を横断的にプッシュ通知します。 システムの構成は以下の通りです。 図2-1. システム概要 2-1. APIサーバ ユーザへの通知要求を受け付けるREST fullなAPIを備えたWebサーバです。 Node.jsのClusterによる、master/worker構成で稼働します。 通知要求はワーカプロセスで処理します。 図2-2. APIサーバ 2-2. Redisサーバ(データストア用) 一時的なデータをストアするためのRedisサーバです。 sentinelプロセスによる、master/slave構成で稼働します。 ストアされたデータはメモリ上のみで管理し、ディスクへの書き込みは行いません。 以下の情報を管理します。 ユーザのオンライン情報 ユーザIDの索

  • Redisのビットコマンドを用いた高速集計 - アルパカDiary Pro

    Redisは様々な型をもっているので 単純な集計(increment)は結構柔軟にできたりします。 ですが、後から条件付きでクロス集計したい時があると思います。 Redisにはビット演算するコマンドがあるので それを使っていろいろな集計をしてみました。 ビット関連コマンドリファレンス GETBIT/SETBIT Redis 2.2.0以降が必要。 ビットのオフセットに対してフラグを取得/設定します。 GETBIT key offset SETBIT key offset value(1/0) BITCOUNT Redis 2.6.0以降が必要。 キーに対するビットカウントを取得します。 BITCOUNT key [start] [end] BITOP Redis 2.6.0以降が必要。 複数のキーに対してビット操作を行うことが出来ます。 集計にはこの操作を使います。 BITOP opera

    Redisのビットコマンドを用いた高速集計 - アルパカDiary Pro
    t10471
    t10471 2014/05/02
  • サービス終了のお知らせ - NAVER まとめ

    サービス終了のお知らせ NAVERまとめは2020年9月30日をもちましてサービス終了いたしました。 約11年間、NAVERまとめをご利用・ご愛顧いただき誠にありがとうございました。

    サービス終了のお知らせ - NAVER まとめ
    t10471
    t10471 2014/01/06
  • Redis勉強会資料(2015/06 update)

    Redis勉強会の資料です。2013年に初版をアップしました。2015年6月にRedis-Clusterの内容を追記して再アップを行っています。

    Redis勉強会資料(2015/06 update)
    t10471
    t10471 2013/10/28
  • GitHub - phpredis/phpredis: A PHP extension for Redis

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - phpredis/phpredis: A PHP extension for Redis
  • Flickr: RedisをMySQLのセカンダリインデックスにする - ワザノバ | wazanova.jp

    http://code.flickr.net/2013/03/26/using-redis-as-a-secondary-index-for-mysql/ Flickrエンジニアブログで、Redisを利用したDBクエリ最適化の事例を紹介しています。 1) 背景 Yahoo.comのサイトの右側に、直近でアクティブなFlickrコンタクトの写真が10枚掲載 [例] されます。 Yahoo.comのトップページのサイトパフォーマンスを担保するため、このAPIはかなり厳しめのSLA (Service Leve Agreement) が課せられてます。直近に写真をアップロードしたアクティブなユーザのリスト作成の際、コンタクト数が多いユーザが存在すると、SLAを守るパフォーマンスがだせないため、クエリとMySQLのインデックスを改善する必要がでてきた。 2) 最初の試み 直近のコンタクトデータを非

    t10471
    t10471 2013/10/22
  • yusuke.be

    yusuke.be 2020 Copyright. All Rights Reserved. The Sponsored Listings displayed above are served automatically by a third party. Neither the service provider nor the domain owner maintain any relationship with the advertisers. In case of trademark issues please contact the domain owner directly (contact information can be found in whois). Privacy Policy

    t10471
    t10471 2013/09/10
  • Redis でお手軽に複数台構成の検証環境を作る - akishin999の日記

    最近 Redis の Sharding 構成やレプリケーション構成を検証するために複数の Redis インスタンスを起ち上げる事が多いのですが、その度に一々設定を変更した redis.conf を用意するのが結構面倒でした。 という事でちょっと調べてみると、どうやら redis-server は起動時に設定ファイルと個別の設定項目の両方を指定でき、設定ファイルの指定内容を個別項目の指定で上書きできるようです。 というわけで、最近はお手軽にパラメータを指定したシェルスクリプトを書いて使っています。 体のインストール(CentOS 6.3 x86_64) まずは体のインストールですが、remi リポジトリに最新版(2.6.13) の RPM があるのでそちらを使うと楽です。 remi 版の Redis は gperftools の tcmalloc を使っているので、最初に gperfto

    Redis でお手軽に複数台構成の検証環境を作る - akishin999の日記
    t10471
    t10471 2013/07/01
  • Redis の永続化について調べた - akishin999の日記

    Redis でのデータの永続化方法について調べたので、忘れないうちにまとめておきます。 調べた時の Redis のバージョンは 2.6.13 です。 スナップショット(RDB) Redis のデフォルトの永続化の仕組み この設定が有効な場合、Redis は定期的にデータベースの内容をディスクに出力する Redis を再起動するとこのファイルからデータが読み込まれ復元される 一定回数の更新 + 一定間隔でディスクにファイル出力 ファイル出力タイミングは設定ファイル、CONFIG コマンドで変更可能 無効にもできる 出力は非同期で行われるため、プロセスがクラッシュした場合には前回のスナップショット以降のデータが失われる可能性あり 多少のデータロスを許容できるようなデータならスナップショットのみでもイケそう 手動で実行するには SAVE コマンドまたは BGSAVE コマンドを実行 SAVE は

    Redis の永続化について調べた - akishin999の日記
    t10471
    t10471 2013/06/11
  • Redisでオートコンプリート (1)前方一致

    まずは一番シンプルな実装。 SQL の % 部分一致の KVS 版。 サジェスト時には、全キーを取得し(LRANGE)、検索文字列と前方一致するキーを候補として返す。 LRANGE の計算量は O(StartOffset+NumberOfElement) のため、キーが増えるとスケールしない。 キーの追加 候補となるキーを LPUSH で追加する。 > lpush key foo (integer) 1 > lpush key bar (integer) 2 > lpush key baz (integer) 3 サジェスト LRANGE key 0 -1 で全キーを取得する。 > lrange key 0 -1 1) "baz" 2) "bar" 3) "foo" あとは、各キーが検索文字列と前方一致するかチェックし、一致すればサジェスト候補で返す。 References Josiah

    Redisでオートコンプリート (1)前方一致
    t10471
    t10471 2013/05/24
  • 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 ディレクティブで保存するタイミングを指定します。

    t10471
    t10471 2013/05/23
  • Redisのランキング管理API作りました

    概要 RedisのSort SetのAPIが若干使いづらいので、ソーシャルゲームでのユースケースに即したAPIでラップしました。 https://github.com/matsubo/redis-ranking インストール Composer対応してあります。 composer.jsonに以下を書いて、php composer.phar updateしてください。 { "require": { "redis/ranking": "1.0.*" } サンプルコード <?php require __DIR__ . '/../vendor/autoload.php'; use Matsubo\Redis\Ranking; $redis = new \Redis(); $redis->connect('127.0.0.1', 6379); $ranking = new Ranking($key =

    Redisのランキング管理API作りました
  • Redis Partial Word Match -- You (Auto)complete Me

    We can use partial word matching to rapidly search strings of text such as Names, Cities, States, etc. We can do this by indexing strings into Redis sets based on partial matches of the string. The indexing process takes a string and breaks it into left-bound substrings which are placed into the appropriate Redis sets. Partial word matching movie titles In this example we’ll enable partial word ma

    t10471
    t10471 2013/04/30
  • master-slave構成のredisでttl(expire)を持つキーを使う方法 - diary

    いろいろあってめんどい。 ttlを指定したキーの実削除は、キーの参照があった際又は100ms毎に行われるttlを持つ全キーからのランダムルックアップによる検査により行われる 故に、短いttlを持つキーが多数存在する場合には、(実際に参照しない限り)実削除が間に合わなくなる(意図した時間に揮発しない)事がある これだけならまあ参照すればいいんですが master-slave構成時、slaveから見たキーの削除はmaster側からの削除命令が無ければ行わず、ttl < 0となったキーに関してもこれは同様に扱われる 故に、揮発されるべきキーがslaveから参照されても、実削除は行われず、(master側の定期実削除が間に合っていない場合)slaveはそのまま揮発されているべきキーの値を返してしまう 対応策は masterに対してgetを投げる master-slaveとは何だったのか… redi

    master-slave構成のredisでttl(expire)を持つキーを使う方法 - diary
    t10471
    t10471 2013/04/30
  • redisのmaster-slave構成で考えるべきことの話 - diary

    結論 Redisは2.6を使おう master-slave構成を取る場合はclient-output-buffer-limitをちゃんと意識するべき 概要 redisはエッジトリガ型のnon-blocking I/Oを用いてシングルスレッドでソケットの読み書きをぶん回す構造で書かれています。 よってclientやslaveへ対してのreplyを行う際も、ソケット自体の送信バッファが溢れた際(EAGAINが帰った際)には一度イベントループに処理を戻し、またソケットが書き込み可能になってイベントループが自分を呼んでくれた時に続きをwriteします。 まあnon-blocking I/Oなんだから当たり前なんですが、送信処理を再入可能にするためにredisはアプリケーションレベルで出力バッファを持っています。 これは送信が終わり次第適宜解放されるものの、write自体が間に合わなくなると詰まって

    redisのmaster-slave構成で考えるべきことの話 - diary
  • Node.jsに強烈に個性的な「SocketStream」が登場!:Rails Hub情報局:エンジニアライフ

    また1つ、Node.jsベースのWebアプリケーションフレームワーク「SocketStream」が登場しました。6月23日にロンドンで開催されたHacker Newsのミートアップで発表されたようです(@makoto_inoueさん、情報提供ありがとうございます!)。GitHubのレポジトリにはバージョン0.1のソースコードと、何ができるかというサンプルコードを含む長大なドキュメントが公開されています。 このSocketStreamは、単にまたNode.jsでWebアプリケーションフレームワークが1つ増えたという感じではないようです。従来のものとは、設計がドラスティックに異なっています。 まず、名前から自明なように、WebSocketを基としていて、SPA(Single Page Application)が作りやすいように設計されています。SPAとは、1ページのHTMLを読み込んだら、後

    Node.jsに強烈に個性的な「SocketStream」が登場!:Rails Hub情報局:エンジニアライフ
  • Redis の Pub/Sub を使って Node.js + WebSocket のスケールアウトを実現する方法

    Node におけるスケールアーキテクチャ考察(Scale 編)というエントリーを読んで、RedisはPub/Sub型通信をサポートしているという事を知りました。エントリーでも言及されているように、Pub/Subを使えば Node.js + WebSocket サーバをスケールする際に、中継サーバの役割を果たす事が出来るはずです。 そんな訳で実際に Node.js と Redis を使って Pub/Sub の実験を行なってみました。ユーザが別々のNode.jsサーバに接続していてもWebSocketを通してメッセージのやり取りを出来るようにします。 イメージとしてはこんな感じです。 下準備# Ubuntuの場合は apt-get で1発でインストールする事が出来ます。 $ sudo apt-get install redis npmでredisモジュールをインストールします。 $ npm i

    Redis の Pub/Sub を使って Node.js + WebSocket のスケールアウトを実現する方法