ユーザ用ツール

サイト用ツール


redis

差分

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

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
redis [2017/11/21 08:35] 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型データの操作 ===
行 72: 行 85:
   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運用の注意点 ===== ===== redis運用の注意点 =====
  
 ==== keysは絶対に使わない ==== ==== keysは絶対に使わない ====
  
-keysはとてもCPU負荷の大きいコマンド。アプリケーション内では決て使用してはいけい。有名どころのサービスでも誤って使用し不具合を出している事例があります。要注意+keysは要するにテーブルフルスキャンで、とてもCPU負荷の大きいコマンドです後述のとおりRedisはシングルスレッドゆえkeys処理中は他のコマンドを受け付けなくなります。 
 + 
 +このコマンドをアプリケーションから安易に実行たことが原因で、か有名な会社が運営しているサービスやソーシャルゲームでも不具合を出し事例があります。要注意 
 + 
 +==== メモリは十分に ==== 
 + 
 +メモリ重要。全てのデータがメモリに乗るようにしましょう。 
 + 
 +==== Redisはシングルスレッド ==== 
 + 
 +CPUコアの多いマシンを使っても性能は上がりません。遅いからと言ってCPUの良いインスタンスに変えても改善しないことがほとんどです。 
 + 
 +遅い場合は 
 + 
 +  * メモリが足りているか 
 +  * アプリ内で O(n) のコマンドを乱発していないか 
 + 
 +あたりをチェックしましょう。 
 + 
 +==== connectionのtimeoutを設定しよう ==== 
 + 
 +特にコネクションプールする場合は、サーバ側にconnection timeoutを設定しましょう。
  
-==== redisはシングルスレッド ====+大抵のアプリ終了時にコネクションの切断などしていないのため、redisサーバ側に死んでいるコネクが溜まっていき、いずれfile descriptorの限界を超えて新規接続ができなくなります。
  
-CPUコアの大きなマシンを使っても性能は全く上がりせん+redisサーバtimeoutはredisクライアント側よりも大きい値にすべきです。クライアントより先にサーバ側でconnectionが破棄されると、クライアントはコネク破棄検知できずに死んだコネクションへ読み書きを行ってうためです。
redis.1511253351.txt.gz · 最終更新: 2017/11/21 08:35 by nullpon