redisの紹介と使用(一)-インストール、拡張、benchmarkなど


redisはkey-valueストレージシステムです.Memcachedと同様に、string(文字列)、list(チェーンテーブル)、set(セット)、zset(秩序セット)など、格納されたvalueタイプが相対的に多くサポートされています.これらのデータ型は、push/pop、add/remove、および交差および差セット、およびより豊富な操作をサポートし、これらの操作は原子的である.これに基づいて、redisは様々な方法のソートをサポートします.memcachedと同様に、効率を保証するために、データはメモリにキャッシュされます.違いはredisが更新したデータを定期的にディスクに書き込むか、修正操作を追加の記録ファイルに書き込むか、それに基づいてmaster-slave同期を実現することである.
redisは、memcacheのような従来のリレーショナル・データベース(mysqlなど)とは異なり、list(チェーンテーブル)、set(セット)の操作が内部に統合されている非リレーショナル・データ・ストレージ・ツールであり、listを挿入、削除して交差を取り、差セットをセットするなどのデータの処理を迅速に行うことができ、下位データベースの圧力を大幅に軽減し、ユーザーの応答速度を速めることができます.
勉强するだけで、プロジェクトに応用していないので、ここでは自分が勉强の中で重要だと感じていることと、自分の心得をざっと覚えておきます.
Redisの定義を見終わったら、次にredisをインストールします.
Windowsシステムredisインストール
このwindows版のredisをダウンロードしてC:ディスクの中で新しいフォルダを作ってredisを保存して、ファイルパッケージの中の各ファイルは以下のように紹介します:
  
redis-server.Exceサービスプログラム
   redis.conf redisプロファイル
   redis-cli.exeコマンドラインクライアント、テスト用
   redis-check-dump.exeローカルデータベースチェック
   redis-check-aof.exe更新ログチェック
   redis-benchmark.exeパフォーマンステストは、NクライアントからM個のSETs/GETsクエリ(Apacheのabツールと同様)を同時に送信することをシミュレートするために使用されます.
インストールが完了するとredis-serverを開きます.exeはredisサービスを起動し、redis-cliを開くことができます.exeはredisをテストするために命令を入力します.
linuxシステムredisインストール
ダウンロード:http://redis.googlecode.com/files/redis-2.4.13.tar.gz
#tar zxvf redis-2.4.13.tar.gz
#cd redis-2.4.13
#make && make install
#cp /usr/local/software/redis-2.4.13/redis.conf /usr/local/redis/redis.conf
#ln -s /usr/local/bin/redis-server /sbin/redis
#redis --config=/usr/local/redis/redis/conf

redis.confはdaemonizeをyesとして構成し、redisを起動します.
#redis/usr/local/redis/redis.conf
phpredis拡張インストール
ダウンロード:https://github.com/nicolasff/phpredis/downloads
#tar zvxf nicolasff-phpredis-2.2.1-27-gf8f552e.tar.gz
#cd nicolasff-phpredis-2.2.1-27-gf8f552e
#phpize
#./configure --with-php-config=/usr/local/php/bin/php-config
#make
#make install
インストール完了後phpを編集する.iniファイルは、生成されたredisを加える.so拡張、php-fpm再起動
redis.confの詳細は以下の注記を参照
redis.confプロファイル注記(原文アドレス
):
daemonizeが後で実行されるかどうか、デフォルトはno
pidfileは、後でプロセスが実行する場合、pidを指定する必要があります.デフォルトは/var/run/redisです.pid
bindはホストIPをバインドし、デフォルト値は127.0.0.1(注釈)
portリスニングポート、デフォルト6379
timeoutタイムアウト時間、デフォルトは300(秒)
loglevelログレコードレベルは、4つのオプション値、debug、verbose(デフォルト)、notice、warningがあります.
logfileログ記録方式、デフォルト値stdout
Databases使用可能なデータベース数、デフォルト値16、デフォルトデータベース0
saveは、更新操作がどれくらいの時間でデータファイルに同期されるかを示します.これは、デフォルトのプロファイルの設定など、複数の条件を組み合わせて3つの条件を設定できます.
save 900 1 900秒(15分)で少なくとも1つのkeyが変更されました
save 300 10,300秒(5分)以内に少なくとも300 keyが変更される
save 60 10000 60秒で少なくとも10000 keyが変更されました
rdbcompressionローカルデータベースに格納するときにデータを圧縮するかどうか、デフォルトはyes
dbfilenameローカルデータベースファイル名、デフォルト値dump.rdb
dirローカル・データベースの保存パス、デフォルトは./
slaveeof本機がスレーブサービスである場合、プライマリサービスのIPおよびポートを設定する(注釈)
masterauth本機がスレーブサービスである場合、プライマリサービスの接続パスワードを設定します(コメント)
requirepass接続パスワード(コメント)
maxclients最大クライアント接続数、デフォルトは制限されません(コメント)
maxmemory最大メモリを設定し、最大メモリ設定に達すると、Redisは期限切れまたは期限切れになるKeyをクリアしようとします.この方法で処理すると、最大メモリ設定に到達しても、書き込み操作はできません.(コメント)
appendonlyは、更新操作のたびにログを記録するかどうか、オンにしないと、電源が切れたときにしばらくの間データが失われる可能性があります.redis自体の同期データファイルは上記save条件で同期されるため、一定期間メモリにしか存在しないデータもあります.デフォルトはno
appendfilenameはログファイル名を更新し、デフォルトはappendonlyです.aof(注釈)
appendfsyncはログ条件を更新し、3つのオプション値があります.Noはオペレーティングシステムがデータキャッシュをディスクに同期することを示し、alwaysは更新操作のたびにfsync()を手動で呼び出してディスクにデータを書き込み、everysecは毎秒1回同期することを示す(デフォルト).
vm-enabled仮想メモリを使用するかどうか、デフォルトはno
vm-swap-file仮想メモリファイルパス、デフォルト値は/tmp/redis.swap、複数のRedisインスタンス共有不可
vm-max-memoryは、vm-max-memoryより大きいすべてのデータを仮想メモリに格納します.vm-max-memoryの設定がどんなに小さくても、すべてのインデックスデータはメモリに格納されます(Redisのインデックスデータはkeysです).つまり、vm-max-memoryが0に設定されている場合、実際にはすべてのvalueがディスクに存在します.既定値は0です.
----------------------------------------------------------------------------------------
benchmarkツールのテスト情報:
テストコマンド:
redis-benchmark -n 100000 -c 60
redisサーバに100000個のリクエストを送信し、各リクエストに60個の同時クライアントが付属
結果(部分):
====== SET ======
コレクションへの書き込みテスト
  100000 requests completed in 2.38 seconds
10,000件のリクエストが2.38秒以内に完了
  60 parallel clients
要求ごとに60個の同時クライアントがある
  3 bytes payload
毎回3バイトのデータを書き込む
  keep alive: 1
接続を維持し、要求を処理するサーバ
93.06% <= 15 milliseconds
99.96% <= 31 milliseconds
99.98% <= 46 milliseconds
99.99% <= 62 milliseconds
100.00% <= 62 milliseconds
すべてのリクエストは62ミリ秒以内に完了
42105.26 requests per second
1秒あたり42105.26回のリクエストの処理
結果から,redisデータベースは高い同時性の場合でもデータを迅速に処理し,応答できることが分かった.
記事の参考:http://apps.hi.baidu.com/share/detail/20692204