ユーザ用ツール

サイト用ツール


redis

差分

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

この比較画面へのリンク

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