メモリ最適化¶ このページは作業中です。現在のところ、メモリに関する問題が発生したときにチェックするべき項目のリストにすぎません。 小さな集約データ型のための特別なエンコーディング¶ Redis 2.2 以降、多くのデータ型は、ある一定のサイズ以下であれば、使用する空間が小さくなるように最適化がされています。Hash, List, 整数型からなる Set, および Sorted Set は、既定の上限より要素数が小さく、かつ個々の要素のサイズが上限を超えない場合は、非常にメモリ効率の良い方法でエンコードされます。このエンコーディングにより、メモリ使用量は 最大で 10 分の 1 、平均で 5 分の 1 程度に削減されます。 これは、ユーザーやAPIからは完全に隠蔽されます。また、CPU とメモリのトレードオフとなるため、エンコードを適用する最大要素数や各要素の最大サイズは redis.co
Redisのコマンドについて調べた記事のまとめです。 全ての項目に共通の操作 EXISTS キー値の存在チェック DEL 指定したキーを削除 TYPE 指定したキーのデータタイプ取得 KEYS パターンにマッチするキー取得 RANDOMKEY ランダムなキー取得 RENAME キー名の変更 RENAMENX キー名の変更:重複チェックあり DBSIZE 登録されているキー数を取得 EXPIRE 指定したキーの有効期間を指定 TTL 指定したキーの有効期間を確認 SELECT データベースの切り替え MOVE 指定したキーのデータベースを変更 FLUSHDB 選択したデータベースのデータを削除 FLUSHALL 全てのデータベースのデータを削除 文字列データに対する操作 SET データの登録 GET データの取得 GETSET 更新前のデータを取得しながらデータ更新 MGET 複数キーを指定
Redisで扱えるデータ型 String List Set Sorted Set Hash String 文字列型 文字列や数値など、Keyに対して1つに定まる値。 値のset set [key_name] [value] # 1つのkey-valueをsetする mset [key_name_1] [value_1] [key_name_2] [value_2] # key-valueの組を複数setする 値のget get [key_name] # 1つのkeyに対するvalueをgetする mget [key_name_1] [key_name_2] [key_name_3] # 複数のkeyに対するvalueをgetする 使用例 redis> set name Steven OK redis> get name "Steven" redis> mset number 8 color
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のメモリが溢れたら... (この話は事実ではなくファンタジーです。) 深夜電話で叩
ユーザ情報のように ID をキーにした大量のデータを Redis で管理する場合、ひと工夫して Hash 型を使うと、単純に string 型を使った場合に比べてメモリ使用量が激減することを教わったので、追試してみた。 データモデル String 型を使う 各 ID のデータを Redis で管理する場合、素直にやるなら string 型で保存する。 > set object:123456 val123456 OK > get object:123456 "val123456" 非常に原始的なキーとバリューのペア。 Hash 型を使う Redis 2.2 以降では hash が機能改善され、フィールド数が一定数におさまり、フィールドのデータが一定サイズに収まると、メモリ使用量が平均して 1/5 に軽減されている。 Special encoding of small aggregate da
リンク linedevday.linecorp.com LINE DEVELOPER DAY_2015 Tokyo LINE DEVELOPER DAY_2015 Tokyo is a technical conference in which our teams of engineers share their various experiences and also address open issues. Shunsuke.N A-5 HBaseとRedisを使った100億超/日メッセージを処理するLINEのストレージ HALL A 13:30 - 14:10 "LINEのメッセージングストレージとしての難しい要求に対して、RedisとHBaseを利用してどのように問題を解決してきたかについて紹介します。 最初にLINEでのストレージのユースケースを共有した上で、ストレージの可用性を
Redis-Sentinelを使って冗長化するとき、VIPの制御はどうしよっかな〜と思っていろいろ調べた結果、client-reconfig-scriptを使うとVIP付けれそう!ってことがわかって、やってみたのでまとめ。 環境 CentOS 6.5 x86_64 redis-2.8.9-1.el6.remi.x86_64 3台構成でIPとかははこんな感じで。 Portはデフォルトの6379です。 3台全てでredis,redis-sentinelが動きます。 redis1 192.168.0.1/24 redis2 192.168.0.2/24 redis3 192.168.0.3/24 VIP 192.168.0.4/24 Redis,Redis-Sentinel インストール remiレポジトリを使用して2.8系をyumでサクッと。 redis1をマスターにしてレプリケーションを組ん
こんにちは、宇津井です。 弊社ではゲソてんというゲームプラットフォームを運営しております。ゲソてんではサービスリリース当初から主にキャッシュ的な役割でRedisを導入していました。つい先日の事ですが訳あってRedis 2.6からサポートされたRedis Sentinelを採用しました。今回は、採用に至った経緯をご紹介します。 簡単なシステム構成 パフォーマンスは良いし、Memcachedには無い便利な機能を提供するRedisですが約一年間運用していくつかの問題が出てきました。 Redisサーバーが突然高負荷に陥るするとWebサーバーも高負荷に陥るRedisのReplicationは張ってるけどアプリケーション側でRedis Slaveへフェイルオーバーしない(MySQLを直接参照する)Redis落ちると恐らくMySQLサーバーが耐えられない(落ちた事無いけど)という事で対策を行ってきました
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の索
修正: 2/10 node-cronを使ったコードの例が間違っていたので修正。 github社製のボットフレームワーク、hubotをIRCボットとして導入する話。 インストール hubotはnode.jsとcoffescriptで書かれたgithub社製のボットフレームワーク。IRCに限らず、campfireやtwitterなどいくつかのアダプタに対応しているが、ここではIRCで利用するための導入手順を記す。 あらかじめnode.jsとnpmをインストールしておいて、hubotをインストールする。 $ git clone git://github.com/github/hubot.git $ cd hubot $ npm installhubotは、ボットが扱うデータを永続化するためにredisというKVSを利用する。redisが入っていない時はエラーになるので動かす前にインストールする。
どうも、プラットフォームDivでエンジニアをやっている Wataru です。 最近3人目の子供が産まれて、産後自宅勤務をさせてくれた弊社はとてもいい会社だと思います。出産予定のあるエンジニアのかたは是非弊社に転職を。 さて、今回はRedisの紹介をさせて頂きたいと思います。 Redisってすごくマイナーなわけではないのですが、めちゃくちゃ便利なのにあまり注目されていないなーという印象があるので、これを機会に是非使ってみてもらえると嬉しいです。 Redisって何?Redisとは「remote dictionary server」から名前が付けられたオープンソースのkey-valueデータストアです。 MemcacheDB等のKVSとの最大の違いは、格納するバリューがデータ構造というところです。 つまり、リスト・セット・ハッシュなどのデータ構造で格納できるのでバリューに対してアトミックな操作が
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く