ユーザ用ツール

サイト用ツール


redis

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

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