redis
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
redis [2015/04/07 07:42] – [コマンド] nullpon | redis [2024/09/27 02:49] (現在) – [valkey] nullpon | ||
---|---|---|---|
行 1: | 行 1: | ||
- | ====== | + | ====== |
[[http:// | [[http:// | ||
+ | |||
+ | ===== valkey ===== | ||
+ | |||
+ | Redisのフォーク | ||
+ | |||
+ | * https:// | ||
===== インストール ===== | ===== インストール ===== | ||
行 22: | 行 28: | ||
sentinelを起動 | sentinelを起動 | ||
- | $ redis-sentinel | + | |
コンフィグファイルを指定してsentinelを起動 | コンフィグファイルを指定してsentinelを起動 | ||
- | $ redis-sentinel ./ | + | |
- | + | ||
===== コマンドラインツール ===== | ===== コマンドラインツール ===== | ||
行 33: | 行 38: | ||
==== クライアント起動 ==== | ==== クライアント起動 ==== | ||
- | | + | |
+ | |||
+ | DB番号を指定 | ||
+ | |||
+ | $ redis-cli -n 1 | ||
==== コマンド ==== | ==== コマンド ==== | ||
行 55: | 行 64: | ||
info server | info server | ||
info sentinel | info sentinel | ||
+ | | ||
+ | 指定番号のDBに変更 | ||
+ | |||
+ | select 1 | ||
=== hash型データの操作 === | === hash型データの操作 === | ||
行 71: | 行 84: | ||
HGETALL key | HGETALL key | ||
+ | | ||
+ | === バルク処理 === | ||
+ | |||
+ | ver 2.8から。 | ||
+ | |||
+ | コマンドを羅列したファイルを作る。改行コードをCR+LF(windows)で保存 | ||
+ | |||
+ | < | ||
+ | set nyan nyannyan | ||
+ | set wang wangwang | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | cat data.txt | redis-cli --pipe | ||
+ | </ | ||
+ | ===== redis運用の注意点 ===== | ||
+ | |||
+ | ==== keysは絶対に使わない ==== | ||
+ | |||
+ | keysは要するにテーブルフルスキャンで、とてもCPU負荷の大きいコマンドです。後述のとおりRedisはシングルスレッドゆえkeys処理中は他のコマンドを受け付けなくなります。 | ||
+ | |||
+ | このコマンドをアプリケーションから安易に実行したことが原因で、かなり有名な会社が運営しているサービスやソーシャルゲームでも不具合を出した事例があります。要注意 | ||
+ | |||
+ | ==== メモリは十分に ==== | ||
+ | |||
+ | メモリ重要。全てのデータがメモリに乗るようにしましょう。 | ||
+ | |||
+ | ==== Redisはシングルスレッド ==== | ||
+ | |||
+ | CPUコアの多いマシンを使っても性能は上がりません。遅いからと言ってCPUの良いインスタンスに変えても改善しないことがほとんどです。 | ||
+ | |||
+ | 遅い場合は | ||
+ | |||
+ | * メモリが足りているか | ||
+ | * アプリ内で O(n) のコマンドを乱発していないか | ||
+ | |||
+ | あたりをチェックしましょう。 | ||
+ | |||
+ | ==== connectionのtimeoutを設定しよう ==== | ||
+ | |||
+ | 特にコネクションプールする場合は、サーバ側にconnection timeoutを設定しましょう。 | ||
+ | |||
+ | 大抵のアプリは終了時にコネクションの切断などしていないのため、redisサーバ側に死んでいるコネクションが溜まっていき、いずれfile descriptorの限界を超えて新規接続ができなくなります。 | ||
+ | redisサーバのtimeoutはredisクライアント側よりも大きい値にすべきです。クライアントより先にサーバ側でconnectionが破棄されると、クライアントはコネクション破棄を検知できずに死んだコネクションへ読み書きを行ってしまうためです。 |
redis.1428392575.txt.gz · 最終更新: 2015/04/07 07:42 by nullpon