CentOS6.5下redisインストール配置構成ガイド、常用コマンド、主従同期クラスタ、redis-php学習資料統合詳細...
22806 ワード
1.Redisの紹介、インストール、構成、起動プロセス
1.1、Redis特徴の概要
RedisはRemote Dictionary Serverの略です.彼は本質的にKey/Valueデータベースであり、Memcachedに似たNoSQL型データベースであるが、彼のデータはディスクに永続的に保存することができ、サービス再起動後にデータが失われないという問題を解決した.彼の値はstring(文字列)、list(リスト)、sets(セット)、ordered sets(ソートされたセット)であり、すべてのデータ型はpush/pop、add/remove、サービス側のパラレルセット、交差、2つのsetsセットの違いなどの操作を実行します.これらの操作はすべて原子性であり、Redisはまた様々なソート能力をサポートします.
Redisは、PHP、Java、C#、Perl、Python、Rubyなど、ほとんどの主流の開発言語をサポートしています.
通常、Redisはデータをメモリに格納するか、仮想メモリを使用するように構成されます.2つの方法でデータの持続化を実現できます.スクリーンショットを使用して、メモリ内のデータをディスクに書き込み続けます.またはMySQLのようなログ方式を使用して、更新するたびにログを記録します.前者は性能が高いが、ある程度のデータ損失を引き起こす可能性がある.後者は反対だ.
Redisは、データを複数のスレーブ・ライブラリに同期することをサポートします.この特性は、読み取り性能の向上に非常に役立ちます(物理マシンの実際の環境では、毎秒10万回以上の同時読み取り速度が得られます).
1.2、redisダウンロード
1.3、解凍
これにより、現在のディレクトリの下に発行版のソースコードを含むディレクトリが新規に作成され、cdがこのディレクトリにアクセスしてサーバのコンパイルを続行する必要があります.
1.4、コンパイルとインストール
redis解凍ディレクトリに入り、次のコマンドを実行してRedisをコンパイルします.
ディレクトリのインストールを指定することもできます.
make prefix=/path/to/installdir install
tcmallocパッケージをインストールするには、make USE_などのパラメータを指定する必要があります.TCMALLOC=yes FORCE_LIBC_MALLOC=yes
基本的な構成のコンパイルには、一般的に1分程度かかりますが、実際に必要な時間はハードウェアや選択したモジュールの数によって大きく異なります.
1.5、配置
次にredisをコピーする.confから/etc/の下で、プロファイルを変更してRedisサーバを構成します.
1.6、パラメータ参照
1.7、バージョン参照
1.8.Redisサーバーの起動
注意:このコマンドには起動パラメータが1つしかありません./path/to/redisを指定します.confディレクトリの下のプロファイルで、パラメータを付けずにデフォルトの構成を実行します.
テスト起動redis-cli pingはPONGを返し、起動に成功した.
1.9、Redisを停止する
サービスを閉じる
注意:指定可能なポート:redis-cli-p shutdown
1.10、接続Redis
redisをリンクする2つの方法:
方法一、
方法二、
.
2、redis常用命令詳細
2.1.redisコンパイルインストールコマンドの表示
2.2、redis-benchmarkはRedis性能テストツールで、Redisのあなたのシステムとあなたの配置の下での読み書き性能、redisの基準情報と性能検査をテストします.
redis-benchmarkパラメータ:
2.3.redis-cliの使用説明
2.4、redis-check-aof
ログチェックを更新し、--fixパラメータを追加してlogファイルを修復します.
2.5、 redis-check-dump
ローカル・データベース・ファイルの確認
2.6、サーバーの情報と統計を取得する
3、redis主従モード実戦
3.1、Redisの主従構成の概要:
RedisでMaster-Slaveモードを構成するのは簡単です.次の文章を読み終えると、redisのMaster-Slave同期を簡単に完了できると信じています.ここではまず理論的な知識をリストし、実際の操作の例を示します.
次のリストは、Redis Replicationの特徴と利点を明確に説明しています.
1、同じMasterで複数のSlavesを同期できます.2、Slaveは同様に他のSlavesの接続と同期要求を受け入れることができ、これによりMasterの同期圧力を効率的に分担することができる.したがって,RedisのReplicationアーキテクチャをグラフィック構造と見なすことができる.
3、Master ServerはSlavesに非ブロックでサービスを提供する.したがって、Master-Slave同期中も、クライアントはクエリーまたは変更リクエストを送信することができます.
4、Slave Serverも同様に非ブロックでデータ同期を完了する.同期中にクライアントがクエリー要求を発行すると、Redisは同期前のデータを返します.5.Slaveサーバは、Masterの読み取り圧力を分担するために、クライアントに読み取り専用のサービスを提供することができ、書き込みサービスは依然としてMasterによって完了しなければならない.それでもシステムの伸縮性は大きく向上した.
6、Masterはデータ保存操作をSlavesに渡して完成させることができ、それによってMasterの中で独立したプロセスがこの操作を完成させることを避けることができる.
3.2、redis主従の動作原理:
Slaveが起動してMasterに接続されると、SYNCコマンドがアクティブに送信されます.その後、Masterはバックグラウンド・ディスク・プロセスを開始し、データセットを変更するために受信したすべてのコマンドを収集します.バックグラウンド・プロセスの実行が完了すると、Masterはデータベース・ファイル全体をSlaveに転送し、完全な同期を完了します.一方、Slaveサーバは、データベース・ファイル・データを受信した後、そのディスクをメモリにロードします.その後、Masterは収集したすべての変更コマンドと新しい変更コマンドをSlavesに順次転送し続け、Slaveは今回、これらのデータ変更コマンドを実行して最終的なデータ同期を達成する.
MasterとSlaveの間のリンクが切断された場合、Slaveは自動的にMasterを再接続できますが、接続に成功した後、完全な同期は自動的に実行されます.
3.3、構成手順の説明:
Redisのmaster/slaveデータレプリケーション方式は、マスターが非ブロッキングモードである、すなわちslaveがデータ同期を実行する場合、masterはクライアントからの要求を受け入れることができ、同期データの整合性に影響を及ぼさないが、slave端がブロッキングモードであり、slaveがmasterデータを同期する場合、クライアントのクエリRedisに応答することができないmaster/slaveモードでは、masterはデータの読み書きサービスを提供するが、slaveは読み書きサービスRedisのみを提供するmaster/slaveの構成はslaveホストのRedisディレクトリの下のredisである.confプロファイル
構成方法は2種類あります.
1つのクラスタは最大4096個のノード(プライマリノードmasterとスレーブノードslave)を含むことができ、最大数百個のノードを設定することを提案し、その構成は特に簡単で、サーバからのredisである.confプロファイルのslaveofパラメータは、プライマリサーバのipおよびポートを指します.
3.4、主従インプリメンテーションケースを作成する(このケースは1ホストのマルチポート方式で実現する):
3.4.1.redisマスターディレクトリの作成
3.4.2.redisマスターサーバのプロファイルをそれぞれ修正する
3.4.3、それぞれマスター、スレーブサーバーを起動する
3.4.4、主、サーバーからのログファイルを別々に表示する
3.4.5.redisマスター、データファイルmd 5から指紋情報を表示する
指紋情報によりredisマスター、サーバからのデータが一致する
3.4.6、メインサーバーにデータを追加する
3.4.7、サーバーからデータ情報が同期されたかどうかを確認する
3.4.8、メイン、サーバーからのmd 5データ指紋を再度確認する
3.4.9.redisプライマリ・スレーブ・サーバーの作業ディレクトリの表示
4、PHPにredisカードを取り付ける
4.1、php_のダウンロードredis拡張モジュール
4.2、php_をインストールするredis拡張モジュール
4.3、php.phpファイルでphp_を構成するredisモジュール
4.4、phpが起動しているかどうかを確認し、起動している場合は再起動し、起動していない場合は直接起動する.
4.5、ブラウザでphp_を見るredisモジュールが正常にロードされたかどうかは、linuxコマンドラインツールで確認します.
5、phpプログラムを作成してphp_をテストするredisモジュール
5.1、php接続redisのプログラムコード
5.2、デバッグ出力結果
転載先:https://blog.51cto.com/fangniuwa/1751947
1.1、Redis特徴の概要
RedisはRemote Dictionary Serverの略です.彼は本質的にKey/Valueデータベースであり、Memcachedに似たNoSQL型データベースであるが、彼のデータはディスクに永続的に保存することができ、サービス再起動後にデータが失われないという問題を解決した.彼の値はstring(文字列)、list(リスト)、sets(セット)、ordered sets(ソートされたセット)であり、すべてのデータ型はpush/pop、add/remove、サービス側のパラレルセット、交差、2つのsetsセットの違いなどの操作を実行します.これらの操作はすべて原子性であり、Redisはまた様々なソート能力をサポートします.
Redisは、PHP、Java、C#、Perl、Python、Rubyなど、ほとんどの主流の開発言語をサポートしています.
通常、Redisはデータをメモリに格納するか、仮想メモリを使用するように構成されます.2つの方法でデータの持続化を実現できます.スクリーンショットを使用して、メモリ内のデータをディスクに書き込み続けます.またはMySQLのようなログ方式を使用して、更新するたびにログを記録します.前者は性能が高いが、ある程度のデータ損失を引き起こす可能性がある.後者は反対だ.
Redisは、データを複数のスレーブ・ライブラリに同期することをサポートします.この特性は、読み取り性能の向上に非常に役立ちます(物理マシンの実際の環境では、毎秒10万回以上の同時読み取り速度が得られます).
1.2、redisダウンロード
[root@mysqldb1 ~]# wget http://download.redis.io/releases/redis-3.0.5.tar.gz
1.3、解凍
[root@mysqldb1 ~]# tar xf redis-3.0.5.tar.gz
これにより、現在のディレクトリの下に発行版のソースコードを含むディレクトリが新規に作成され、cdがこのディレクトリにアクセスしてサーバのコンパイルを続行する必要があります.
1.4、コンパイルとインストール
redis解凍ディレクトリに入り、次のコマンドを実行してRedisをコンパイルします.
[root@mysqldb1 ~]# cd redis-3.0.5
[root@mysqldb1 redis-3.0.5]# make && make install
ディレクトリのインストールを指定することもできます.
make prefix=/path/to/installdir install
tcmallocパッケージをインストールするには、make USE_などのパラメータを指定する必要があります.TCMALLOC=yes FORCE_LIBC_MALLOC=yes
基本的な構成のコンパイルには、一般的に1分程度かかりますが、実際に必要な時間はハードウェアや選択したモジュールの数によって大きく異なります.
1.5、配置
次にredisをコピーする.confから/etc/の下で、プロファイルを変更してRedisサーバを構成します.
[root@mysqldb1 redis-3.0.5]# cp redis.conf /etc/
1.6、パラメータ参照
[root@mysqldb1 redis-3.0.5]# redis-server --help
Usage: ./redis-server [/path/to/redis.conf] [options]
./redis-server - (read config from stdin)
./redis-server -v or --version
./redis-server -h or --help
./redis-server --test-memory
Examples:
./redis-server (run the server with default conf)
./redis-server /etc/redis/6379.conf
./redis-server --port 7777
./redis-server --port 7777 --slaveof 127.0.0.1 8888
./redis-server /etc/myredis.conf --loglevel verbose
Sentinel mode:
./redis-server /etc/sentinel.conf --sentinel
1.7、バージョン参照
[root@mysqldb1 redis-3.0.5]# redis-server -v
Redis server v=3.0.5 sha=00000000:0 malloc=jemalloc-3.6.0 bits=64 build=ee8d4e51452e5879
1.8.Redisサーバーの起動
[root@mysqldb1 redis-3.0.5]# redis-server /etc/redis.conf
注意:このコマンドには起動パラメータが1つしかありません./path/to/redisを指定します.confディレクトリの下のプロファイルで、パラメータを付けずにデフォルトの構成を実行します.
[root@mysqldb1 ~]# redis-cli ping
PONG
テスト起動redis-cli pingはPONGを返し、起動に成功した.
[root@mysqldb1 ~]# netstat -tulnp | grep 6379
tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 11731/redis-server
tcp 0 0 :::6379 :::* LISTEN 11731/redis-server
1.9、Redisを停止する
サービスを閉じる
[root@mysqldb1 ~]# redis-cli shutdown
[root@mysqldb1 ~]# netstat -tulnp | grep 6379
[root@mysqldb1 ~]# redis-cli ping
Could not connect to Redis at 127.0.0.1:6379: Connection refused
注意:指定可能なポート:redis-cli-p shutdown
1.10、接続Redis
redisをリンクする2つの方法:
方法一、
[root@mysqldb1 ~]# redis-cli # ip, redis(redis-cli -h 192.168.1.2 -p 6379)
127.0.0.1:6379>
127.0.0.1:6379> quit
方法二、
[root@mysqldb1 ~]# telnet 192.168.1.2 6379
Trying 192.168.1.2...
Connected to 192.168.1.2.
Escape character is '^]'.
quit
+OK
Connection closed by foreign host
.
2、redis常用命令詳細
2.1.redisコンパイルインストールコマンドの表示
[root@mysqldb1 redis-3.0.5]#cd /usr/local/bin
[root@mysqldb1 bin]# ll | grep redis
-rwxr-xr-x. 1 root root 4587299 Nov 2 01:26 redis-benchmark
-rwxr-xr-x. 1 root root 22177 Nov 2 01:26 redis-check-aof
-rwxr-xr-x. 1 root root 45387 Nov 2 01:26 redis-check-dump
-rwxr-xr-x. 1 root root 4691450 Nov 2 01:26 redis-cli
lrwxrwxrwx. 1 root root 12 Nov 2 01:26 redis-sentinel -> redis-server
-rwxr-xr-x. 1 root root 6464789 Nov 2 01:26 redis-server
2.2、redis-benchmarkはRedis性能テストツールで、Redisのあなたのシステムとあなたの配置の下での読み書き性能、redisの基準情報と性能検査をテストします.
redis-benchmarkパラメータ:
[root@mysqldb1 ~]# redis-benchmark --help
Usage: redis-benchmark [-h ] [-p ] [-c ] [-n [-k ]
-h Server hostname (default 127.0.0.1)
IP , 127.0.0.1
-p Server port (default 6379)
, 6379
-s Server socket (overrides host and port)
( )
-a Password for Redis Auth
-c Number of parallel connections (default 50)
-n Total number of requests (default 100000)
-d Data size of SET/GET value in bytes (default 2)
/ ( 2 )
-dbnum SELECT the specified db number (default 0)
-k 1=keep alive 0=reconnect (default 1)
1: ( )0:
-r Use random keys for SET/GET/INCR, random values for SADD
Using this option the benchmark will expand the string __rand_int__
inside an argument with a 12 digits number in the specified range
from 0 to keyspacelen-1. The substitution changes every time a command
is executed. Default tests use this to hit random keys in the
specified range.
SET/GET/INCR , 100 rand:000000000000 - rand:000000000099
-P Pipeline requests. Default 1 (no pipeline).
1( ), , ( )
-q Quiet. Just show query/sec values
, 。
--csv Output in CSV format
CSV
-l Loop. Run the tests forever
,ctrl+c
-t Only run the comma separated list of tests. The test
names are the same as the ones produced as output.
, :-t ping,set,get
-I Idle mode. Just open N idle connections and wait.
。 50 。
Examples:
Run the benchmark with the default configuration against 127.0.0.1:6379:
$ redis-benchmark
Use 20 parallel clients, for a total of 100k requests, against 192.168.1.1:
$ redis-benchmark -h 192.168.1.1 -p 6379 -n 100000 -c 20
Fill 127.0.0.1:6379 with about 1 million keys only using the SET test:
$ redis-benchmark -t set -n 1000000 -r 100000000
Benchmark 127.0.0.1:6379 for a few commands producing CSV output:
$ redis-benchmark -t ping,set,get -n 100000 --csv
Benchmark a specific command line:
$ redis-benchmark -r 10000 -n 10000 eval 'return redis.call("ping")' 0
Fill a list with 10000 random elements:
$ redis-benchmark -r 10000 -n 10000 lpush mylist __rand_int__
On user specified command lines __rand_int__ is replaced with a random integer
with a range of values selected by the -r option.
2.3.redis-cliの使用説明
root@mysqldb1 ~]# redis-cli --help
redis-cli 3.0.5
Usage: redis-cli [OPTIONS] [cmd [arg [arg ...]]]
-h Server hostname (default: 127.0.0.1).
-p Server port (default: 6379).
-s Server socket (overrides hostname and port).
-a Password to use when connecting to the server.
-r Execute specified command N times.
-i When -r is used, waits seconds per command.
It is possible to specify sub-second times like -i 0.1.
-n Database number.
-x Read last argument from STDIN.
-d Multi-bulk delimiter in for raw formatting (default:
).
-c Enable cluster mode (follow -ASK and -MOVED redirections).
--raw Use raw formatting for replies (default when STDOUT is
not a tty).
--no-raw Force formatted output even when STDOUT is not a tty.
--csv Output in CSV format.
--stat Print rolling stats about server: mem, clients, ...
--latency Enter a special mode continuously sampling latency.
--latency-history Like --latency but tracking latency changes over time.
Default time interval is 15 sec. Change it using -i.
--latency-dist Shows latency as a spectrum, requires xterm 256 colors.
Default time interval is 1 sec. Change it using -i.
--lru-test Simulate a cache workload with an 80-20 distribution.
--slave Simulate a slave showing commands received from the master.
--rdb Transfer an RDB dump from remote server to local file.
--pipe Transfer raw Redis protocol from stdin to server.
--pipe-timeout In --pipe mode, abort with error if after sending all data.
no reply is received within seconds.
Default timeout: 30. Use 0 to wait forever.
--bigkeys Sample Redis keys looking for big keys.
--scan List all keys using the SCAN command.
--pattern Useful with --scan to specify a SCAN pattern.
--intrinsic-latency Run a test to measure intrinsic system latency.
The test will run for the specified amount of seconds.
--eval Send an EVAL command using the Lua script at .
--help Output this help and exit.
--version Output version and exit.
Examples:
cat /etc/passwd | redis-cli -x set mypasswd
redis-cli get mypasswd
redis-cli -r 100 lpush mylist x
redis-cli -r 100 -i 1 info | grep used_memory_human:
redis-cli --eval myscript.lua key1 key2 , arg1 arg2 arg3
redis-cli --scan --pattern '*:12345*'
(Note: when using --eval the comma separates KEYS[] from ARGV[] items)
When no command is given, redis-cli starts in interactive mode.
Type "help" in interactive mode for information on available commands.
2.4、redis-check-aof
ログチェックを更新し、--fixパラメータを追加してlogファイルを修復します.
redis-check-aof appendonly.aof
2.5、 redis-check-dump
ローカル・データベース・ファイルの確認
redis-check-dump dump.rdb
2.6、サーバーの情報と統計を取得する
[root@mysqldb1 bin]# redis-cli -p 6379 info
# Server
redis_version:3.0.5
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:ee8d4e51452e5879
redis_mode:standalone
os:Linux 2.6.32-431.el6.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:4.4.7
process_id:11760
run_id:51f2b7336fae3bf3e1e4a21d76aa71b02f1e9608
tcp_port:6379
uptime_in_seconds:10033
uptime_in_days:0
hz:10
lru_clock:3570034
config_file:/etc/redis.conf
# Clients
connected_clients:1
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0
# Memory
used_memory:188575024
used_memory_human:179.84M
used_memory_rss:241483776
used_memory_peak:228770552
used_memory_peak_human:218.17M
used_memory_lua:36864
mem_fragmentation_ratio:1.28
mem_allocator:jemalloc-3.6.0
# Persistence
loading:0
rdb_changes_since_last_save:0
rdb_bgsave_in_progress:0
rdb_last_save_time:1446405599
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:2
rdb_current_bgsave_time_sec:-1
aof_enabled:0
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:-1
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_last_write_status:ok
# Stats
total_connections_received:71398
total_commands_processed:22036268
instantaneous_ops_per_sec:0
total_net_input_bytes:820805789
total_net_output_bytes:15461673777
instantaneous_input_kbps:0.00
instantaneous_output_kbps:0.00
rejected_connections:0
sync_full:0
sync_partial_ok:0
sync_partial_err:0
expired_keys:0
evicted_keys:0
keyspace_hits:6295156
keyspace_misses:0
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:3258
migrate_cached_sockets:0
# Replication
role:master
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
# CPU
used_cpu_sys:388.55
used_cpu_user:250.86
used_cpu_sys_children:1.06
used_cpu_user_children:3.15
# Cluster
cluster_enabled:0
# Keyspace
db0:keys=994967,expires=0,avg_ttl=0
3、redis主従モード実戦
3.1、Redisの主従構成の概要:
RedisでMaster-Slaveモードを構成するのは簡単です.次の文章を読み終えると、redisのMaster-Slave同期を簡単に完了できると信じています.ここではまず理論的な知識をリストし、実際の操作の例を示します.
次のリストは、Redis Replicationの特徴と利点を明確に説明しています.
1、同じMasterで複数のSlavesを同期できます.2、Slaveは同様に他のSlavesの接続と同期要求を受け入れることができ、これによりMasterの同期圧力を効率的に分担することができる.したがって,RedisのReplicationアーキテクチャをグラフィック構造と見なすことができる.
3、Master ServerはSlavesに非ブロックでサービスを提供する.したがって、Master-Slave同期中も、クライアントはクエリーまたは変更リクエストを送信することができます.
4、Slave Serverも同様に非ブロックでデータ同期を完了する.同期中にクライアントがクエリー要求を発行すると、Redisは同期前のデータを返します.5.Slaveサーバは、Masterの読み取り圧力を分担するために、クライアントに読み取り専用のサービスを提供することができ、書き込みサービスは依然としてMasterによって完了しなければならない.それでもシステムの伸縮性は大きく向上した.
6、Masterはデータ保存操作をSlavesに渡して完成させることができ、それによってMasterの中で独立したプロセスがこの操作を完成させることを避けることができる.
3.2、redis主従の動作原理:
Slaveが起動してMasterに接続されると、SYNCコマンドがアクティブに送信されます.その後、Masterはバックグラウンド・ディスク・プロセスを開始し、データセットを変更するために受信したすべてのコマンドを収集します.バックグラウンド・プロセスの実行が完了すると、Masterはデータベース・ファイル全体をSlaveに転送し、完全な同期を完了します.一方、Slaveサーバは、データベース・ファイル・データを受信した後、そのディスクをメモリにロードします.その後、Masterは収集したすべての変更コマンドと新しい変更コマンドをSlavesに順次転送し続け、Slaveは今回、これらのデータ変更コマンドを実行して最終的なデータ同期を達成する.
MasterとSlaveの間のリンクが切断された場合、Slaveは自動的にMasterを再接続できますが、接続に成功した後、完全な同期は自動的に実行されます.
3.3、構成手順の説明:
Redisのmaster/slaveデータレプリケーション方式は、マスターが非ブロッキングモードである、すなわちslaveがデータ同期を実行する場合、masterはクライアントからの要求を受け入れることができ、同期データの整合性に影響を及ぼさないが、slave端がブロッキングモードであり、slaveがmasterデータを同期する場合、クライアントのクエリRedisに応答することができないmaster/slaveモードでは、masterはデータの読み書きサービスを提供するが、slaveは読み書きサービスRedisのみを提供するmaster/slaveの構成はslaveホストのRedisディレクトリの下のredisである.confプロファイル
構成方法は2種類あります.
1、
master -> slave
2、
master -> slave -> slave -> slave
├--> slave -> slave
├─-> slave -> slave
└─-> slave -> slave
1つのクラスタは最大4096個のノード(プライマリノードmasterとスレーブノードslave)を含むことができ、最大数百個のノードを設定することを提案し、その構成は特に簡単で、サーバからのredisである.confプロファイルのslaveofパラメータは、プライマリサーバのipおよびポートを指します.
3.4、主従インプリメンテーションケースを作成する(このケースは1ホストのマルチポート方式で実現する):
3.4.1.redisマスターディレクトリの作成
[root@mysqldb1 redis]# mkdir /redis/{master_6379,slave_6380}/{conf,log,data} -p
[root@mysqldb1 redis]# ls
master_6379 slave_6380
3.4.2.redisマスターサーバのプロファイルをそれぞれ修正する
[root@mysqldb1 redis-3.0.5]# cp /root/redis-3.0.5/redis.conf master_6379/conf/master.conf
[root@mysqldb1 redis-3.0.5]# cp /root/redis-3.0.5/redis.conf slave_6380/conf/slave.conf
[root@mysqldb1 redis]# vim master_6379/conf/master.conf#
47 pidfile /redis/master_6379/redis_master.pid
51 port
110 logfile "/redis/master_6379/log/master.log"
193 dir /redis/master_6379/data/
515 appendfilename "appendonly.aof"
[root@mysqldb1 redis]# vim /redis/slave_6380/conf/slave.conf #
46 pidfile /redis/slave_6380/redis_slave.pid
50 port 6380
109 logfile "/redis/slave_6380/log/slave.log"
192 dir /redis/slave_6380/data/
212 slaveof 127.0.0.1 6379
514 appendfilename "appendonly.aof"
3.4.3、それぞれマスター、スレーブサーバーを起動する
[root@mysqldb1 master_6379]# redis-server /redis/master_6379/conf/master.conf
[root@mysqldb1 slave_6380]# redis-server /redis/slave_6380/conf/slave.conf
3.4.4、主、サーバーからのログファイルを別々に表示する
[root@mysqldb1 redis]# cat /redis/master_6379/log/master.log #
... ...
14363:M 02 Nov 12:42:57.805 * DB loaded from disk: 0.000 seconds
14363:M 02 Nov 12:42:57.805 * The server is now ready to accept connections on port 6379#
14363:M 02 Nov 12:43:36.361 * Slave 127.0.0.1:6380 asks for synchronization#
14363:M 02 Nov 12:43:36.361 * Full resync requested by slave 127.0.0.1:6380
14363:M 02 Nov 12:43:36.361 * Starting BGSAVE for SYNC with target: disk
14363:M 02 Nov 12:43:36.496 * Background saving started by pid 14371
14371:C 02 Nov 12:43:36.528 * DB saved on disk
14371:C 02 Nov 12:43:36.528 * RDB: 4 MB of memory used by copy-on-write
14363:M 02 Nov 12:43:36.597 * Background saving terminated with success
14363:M 02 Nov 12:43:36.597 * Synchronization with slave 127.0.0.1:6380 succeeded
[root@mysqldb1 redis]# cat /redis/slave_6380/log/slave.log #
... ...
14368:S 02 Nov 12:43:35.424 * DB loaded from disk: 0.000 seconds
14368:S 02 Nov 12:43:35.424 * The server is now ready to accept connections on port 6380#
14368:S 02 Nov 12:43:36.360 * Connecting to MASTER 127.0.0.1:6379#
14368:S 02 Nov 12:43:36.361 * MASTER SLAVE sync started#
14368:S 02 Nov 12:43:36.361 * Non blocking connect for SYNC fired the event.
14368:S 02 Nov 12:43:36.361 * Master replied to PING, replication can continue...
14368:S 02 Nov 12:43:36.361 * Partial resynchronization not possible (no cached master)
14368:S 02 Nov 12:43:36.497 * Full resync from master: dd7a9d178eb3434494fecd4c97cc05e8d6bc1a69:1
14368:S 02 Nov 12:43:36.598 * MASTER SLAVE sync: receiving 55 bytes from master
14368:S 02 Nov 12:43:36.598 * MASTER SLAVE sync: Flushing old data
14368:S 02 Nov 12:43:36.598 * MASTER SLAVE sync: Loading DB in memory
14368:S 02 Nov 12:43:36.598 * MASTER SLAVE sync: Finished with success
3.4.5.redisマスター、データファイルmd 5から指紋情報を表示する
[root@mysqldb1 redis]# find /redis/ -name *.rdb | xargs md5sum
81646a7364950775039f694b1ddd6c8a /redis/slave_6380/data/slave_dump.rdb
81646a7364950775039f694b1ddd6c8a /redis/master_6379/data/master_dump.rdb
指紋情報によりredisマスター、サーバからのデータが一致する
3.4.6、メインサーバーにデータを追加する
[root@mysqldb1 ~]# redis-cli -p 6379
127.0.0.1:6379> set key1 hello
OK
127.0.0.1:6379> set key2 liangge
OK
127.0.0.1:6379> set key3 OK
OK
127.0.0.1:6379> keys *
1) "key2"
2) "key1"
3) "key3"
127.0.0.1:6379> quit
3.4.7、サーバーからデータ情報が同期されたかどうかを確認する
[root@mysqldb1 ~]# redis-cli -p 6380
127.0.0.1:6380> get key1
"hello"
127.0.0.1:6380> get key2
"liangge"
127.0.0.1:6380> get key3
"OK"
127.0.0.1:6380> keys *
1) "key1"
2) "key2"
3) "key3"
127.0.0.1:6380> quit
3.4.8、メイン、サーバーからのmd 5データ指紋を再度確認する
[root@mysqldb1 ~]# find /redis/ -name *.rdb |xargs md5sum
81646a7364950775039f694b1ddd6c8a /redis/slave_6380/data/slave_dump.rdb
81646a7364950775039f694b1ddd6c8a /redis/master_6379/data/master_dump.rdb
3.4.9.redisプライマリ・スレーブ・サーバーの作業ディレクトリの表示
[root@mysqldb1 redis]# tree /redis
/redis
├── master_6379
│ ├── conf
│ │ └── master.conf
│ ├── data
│ │ └── master_dump.rdb
│ └── log
│ └── master.log
└── slave_6380
├── conf
│ └── slave.conf
├── data
│ └── slave_dump.rdb
└── log
└── slave.log
8 directories, 6 files
4、PHPにredisカードを取り付ける
4.1、php_のダウンロードredis拡張モジュール
phpredis : https://codeload.github.com/owlient/phpredis/zip/master
4.2、php_をインストールするredis拡張モジュール
[root@LNMP ~]# unzip phpredis-master.zip
[root@LNMP ~]# cd phpredis-master
[root@LNMP phpredis-master]# /usr/local/php5.5.30/bin/phpize
[root@LNMP phpredis-master]# ./configure --with-php-config=/usr/local/php5.5.30/bin/php-config
[root@LNMP phpredis-master]# make && make install
[root@LNMP phpredis-master]# ll /usr/local/php5.5.30/lib/php/extensions/no-debug-non-zts-20121212/
total 1668
-rwxr-xr-x. 1 root root 465457 Nov 2 06:21 memcache.so
-rwxr-xr-x. 1 root root 303946 Oct 14 04:24 opcache.a
-rwxr-xr-x. 1 root root 210011 Oct 14 04:24 opcache.so
-rwxr-xr-x. 1 root root 717996 Nov 2 18:35 redis.so
# php_redis
4.3、php.phpファイルでphp_を構成するredisモジュール
[root@LNMP phpredis-master]# vim /usr/local/php5.5.30/lib/php.ini
extension_dir="/usr/local/php5.5.30/lib/php/extensions/no-debug-non-zts-20121212/"
extension="memcache.so"
extension="redis.so"
# php 。
4.4、phpが起動しているかどうかを確認し、起動している場合は再起動し、起動していない場合は直接起動する.
[root@LNMP phpredis-master]# netstat -tulnp | egrep "php|nginx"
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 9922/nginx
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 13361/php-fpm
[root@LNMP phpredis-master]# pkill php
[root@LNMP phpredis-master]# netstat -tulnp | egrep "php|nginx"
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 9922/nginx
[root@LNMP phpredis-master]# /usr/local/php5.5.30/sbin/php-fpm -t
[02-Nov-2015 18:53:33] NOTICE: configuration file /usr/local/php5.5.30/etc/php-fpm.conf test is successful
[root@LNMP phpredis-master]# /usr/local/php5.5.30/sbin/php-fpm -c /usr/local/php5.5.30/lib/php.ini
[root@LNMP phpredis-master]# netstat -tulnp | egrep "php|nginx"
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 9922/nginx
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 13400/php-fpm
4.5、ブラウザでphp_を見るredisモジュールが正常にロードされたかどうかは、linuxコマンドラインツールで確認します.
[root@LNMP phpredis-master]# curl localhost/phpinfo.php|grep redis
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0redis
Registered save handlers files user memcache redis
100 67295 0 67295 0 0 4433k 0 --:--:-- --:--:-- --:--:-- 6571k
This program is free software; you can redistribute it and/or modify it under the terms of the PHP License as published by the PHP Group and included in the distribution in the file: LICENSE
5、phpプログラムを作成してphp_をテストするredisモジュール
5.1、php接続redisのプログラムコード
connect('192.168.1.2',6379) or die("Could not connect redis");
$redis->set('mykey1','liangge');
echo "after insert get mykey1: ".$redis->get('mykey1');
$redis->delete('mykey1');
echo "
after delete get mykey1: ".$redis->get('mykey1');
?>
5.2、デバッグ出力結果
after insert get mykey1: liangge
after delete get mykey1:
転載先:https://blog.51cto.com/fangniuwa/1751947