Redis学習ノート(一)

5294 ワード

Redisとは?
Redisは、「key-value」タイプのデータを使用するNOSQLデータベースシステムです.Redisは純粋なメモリ・データベースでもあり、すべてのデータのアクセス・オペレーションがメモリ内で行われているため、通常よりも高性能です.
Redisの使用方法
Redisの最新の安定バージョンは2.8.7です.Redisの旅を始めるには、次の手順に従います.
$ wget http://download.redis.io/releases/redis-2.8.7.tar.gz  
$ tar xzf redis-2.8.7.tar.gz  
$ cd redis-2.8.7  
$ make  

コンパイル後に生成される実行可能ファイルはsrc/ディレクトリの下にあり、
$ src/redis-server`

をクリックしてredisデータベースサービスを開きます.
もちろん、サーバー側を開くにはクライアントが必要です.Redisには多くの言語で実現されているクライアントがあります.具体的には、中国語の公式サイトのクライアントリストから必要なクライアントパッケージをダウンロードする必要がありますが、ここでは、独自のクライアントプログラムで体験することができます.
先ほどのディレクトリの下で$ src/redis-cliを使用すると、クライアント接続を簡単に開くことができます.ここでデフォルトで接続されているのは、本機が開いているRedisサーバプログラムです.具体的な出典は、src/redis-cli.cの1193行目のconfig.hostip = sdsnew("127.0.0.1");を参照してください.他のRedisサーバにリンクしたい場合は、コマンドラインにsrc/redis-cli -h hostip -p portを入力します.ここでは、hostipportの代わりに、アクセスしたいサーバのIPアドレスとポート番号を入力します.より多くのパラメータはsrc/redis-cli --helpを使用して表示できます.
クライアントを起動したら、まずRedisを体験してみましょう.
<!-- lang: shell -->
redis>set name derek  
OK  
redis>get name  
"derek"  

Redis内のいくつかのコマンドの使用方法については、中国語の公式サイトコマンドの使用詳細を参照してください.
Redisサーバパラメータ構成
Redis-serverを開く前に、パラメータ構成ファイルredisという重要なファイルがあります.config. ./redis-server redis.configを使用して、プロファイルを有効にすることができます.パラメータは次のようになります.http://www.cnblogs.com/daizhj/articles/1956681.html)
  • Redisのデフォルトはデーモンプロセスではありません.この構成項目を変更してyesを使用してデーモンプロセスdaemonize no
  • を有効にすることができます.
  • Redisがデーモン方式で実行する場合、Redisはデフォルトでpidを/var/run/redisに書き込む.pidファイルは、pidfileでpidfile/var/run/redisを指定できます.pid
  • はRedisリスニングポートを指定し、デフォルトポートは6379で、著者は自分のブログで6379をデフォルトポートとして選んだ理由を説明した.6379は携帯電話のボタンにMERZ対応の番号があるため、MERZはイタリアの歌姫Alessia Merzの名前port 6379
  • から取った.
  • バインドホストアドレスbind 127.0.0.1
  • クライアントがアイドル状態になってから接続をオフにし、0と指定すると、この機能をオフにするtimeout 300
  • を示す.
  • ログ・レベルを指定します.Redisは、debug、verbose、notice、warningの4つのレベルをサポートします.デフォルトはverbose loglevel verbose
  • です.
  • ログ記録方式、デフォルトは標準出力、Redisがデーモン方式で実行され、ここでログ記録方式が標準出力として構成されている場合、ログは/dev/null logfile stdout
  • に送信されます.
  • データベースの数を設定します.デフォルトのデータベースは0です.SELECTコマンドを使用して、接続にデータベースid databases 16
  • を指定できます.
  • は、更新操作がどれくらいあるかを指定し、データファイルにデータを同期します.save 900 1 save 300 10 save 60 10000は、save 900秒(15分)内に1つの変更があり、300秒(5分)内に10つの変更があり、60秒内に10000の変更があることを示します.
  • ローカル・データベースに格納するときにデータを圧縮するかどうかを指定します.デフォルトはyesです.RedisはLZF圧縮を採用しています.CPU時間を節約するために、このオプションをオフにすることができますが、データベース・ファイルが大きくなることがあります.
  • ローカルデータベースのファイル名を指定します.デフォルトはdumpです.rdb dbfilename dump.rdb
  • ローカルデータベース格納ディレクトリdir./
  • 自機がslavサービスである場合、masterサービスのIPアドレス及びポートを設定し、Redis起動時に、自動的にmasterからデータ同期slaveof
  • を行う.
  • マスターサービスがパスワード保護を設定場合、slavサービスはマスターのパスワードmasterauth
  • に接続する.
  • Redis接続パスワードを設定し、接続パスワードが設定されている場合、クライアントはRedis接続時にAUTHコマンドでパスワードを提供する必要があり、デフォルトではrequirepass foobared
  • を閉じる.
  • 同じ時間に最大クライアント接続数を設定します.デフォルトでは制限はありません.Redisが同時に開くことができるクライアント接続数はRedisプロセスが開くことができる最大ファイル記述子数です.maxclients 0を設定すると、制限はありません.クライアント接続数が制限に達すると、Redisは新しい接続を閉じ、max number of clients reachedエラーメッセージmaxclients 128
  • をクライアントに返す.
  • はRedisの最大メモリ制限を指定し、Redisは起動時にメモリにデータをロードし、最大メモリに達した後、Redisは期限切れまたは期限切れになるKeyをクリアしようとします.このメソッドの処理後も最大メモリ設定に達し、書き込み操作はできませんが、読み取り操作はできます.Redisの新しいvmメカニズムは、Keyをメモリに格納し、Valueはswap領域maxmemory
  • に格納します.
  • 更新操作のたびにログを記録するかどうかを指定します.Redisはデフォルトでは非同期でディスクにデータを書き込みます.オンにしないと、電源が切れたときにしばらくの間データが失われる可能性があります.redis自体の同期データファイルは上記save条件で同期されるため、一定期間メモリにしか存在しないデータもあります.デフォルトはno appendonly no
  • 更新ログファイル名を指定します.デフォルトはappendonlyです.aof appendfilename appendonly.aof
  • 更新ログ条件を指定します.3つのオプション値があります.no:オペレーティングシステムがデータキャッシュをディスクに同期することを示します(速い)always:更新操作のたびにfsync()を手動で呼び出してデータをディスクに書き込むことを示します(遅い、安全な)everysec:毎秒同期することを示します(トレードオフ、デフォルト)appendfsync everysec
  • 仮想メモリメカニズムを有効にするかどうかを指定します.デフォルト値はnoです.簡単に説明します.VMメカニズムはデータをページングし、Redisによってアクセス量の少ないページ、すなわち冷たいデータswapをディスクに、アクセスの多いページはディスクによって自動的にメモリに変換されます(後述の章ではRedisのVMメカニズムを詳しく分析します).vm-enabled no
  • 仮想メモリファイルパス、デフォルト値は/tmp/redis.swapは、複数のRedisインスタンスがvm-swap-file/tmp/redisを共有することはできない.swap
  • vm-max-memoryより大きいすべてのデータを仮想メモリに格納します.vm-max-memoryの設定がどんなに小さくても、すべてのインデックスデータはメモリに格納されます(Redisのインデックスデータはkeysです).つまり、vm-max-memoryが0に設定されている場合、実際にはすべてのvalueがディスクに存在します.デフォルト値は0 vm-max-memory 0
  • です.
  • Redis swapファイルは多くのpageに分かれており、1つのオブジェクトは複数のpageの上に保存できるが、1つのpageでは複数のオブジェクトに共有されてはいけない.vm-page-sizeは格納されたデータサイズに基づいて設定される.著者らは、多くの小さなオブジェクトを格納する場合、pageサイズは32または64 bytesに設定することを提案する.大きなオブジェクトが格納されている場合は、より大きなpageを使用できます.不明な場合は、デフォルト値vm-page-size 32
  • を使用します.
  • swapファイルのpage数を設定します.ページテーブル(ページの空きや使用を示すbitmap)がメモリに格納されているため、ディスク上で8つのpagesごとに1 byteのメモリが消費されます.vm-pages 134217728
  • swapファイルにアクセスするスレッド数を設定します.マシンのコア数を超えないほうがいいです.0に設定すると、swapファイルに対する操作はすべてシリアルで、比較的長い遅延をもたらす可能性があります.デフォルトは4 vm-max-threads 4
  • です.
  • クライアントへの応答時に、より小さなパケットを1つのパケットに統合する送信するか否かを設定し、デフォルトではglueoutputbufyes
  • をオンにする.
  • 特定の数または最大の要素がある臨界値を超える場合、hash-max-zipmap-entries 64 hash-max-zipmap-value 512
  • を採用する.
  • リセットハッシュをアクティブ化するかどうかを指定し、デフォルトはオン(Redisのハッシュアルゴリズムについては後述)activerehashing yes
  • である.
  • は、同一ホスト上の複数のRedisインスタンス間で同一のプロファイルを使用することができる他のプロファイルを含むことを指定し、各インスタンスは独自の特定のプロファイルinclude/path/to/localを有する.conf