Redis のインストールと使用法、および php で redis を拡張し、redis の php 操作を実現する例
1. ソース コード パッケージ redis-2.8.21.tar.gz をダウンロードします。を指定し、指定したディレクトリ /urs/src、 にアップロードしてから解凍します:
[[email protected] src]# tar - xvf redis- 2.8.21.tar.gz
解凍したディレクトリを入力し、次のコマンドを実行してインストール ディレクトリを /urs/local/redis: として指定します。
[[email protected] src]# cd redis-2.8.21
[[email protected] redis-2.8.21]# make PREFIX=/usr/local/redis install
redis が正常にインストールされると、/usr/local/redisbin が表示されます。 > > ディレクトリには、次のファイルが含まれています:
[[email protected] ~]# cd /usr/local/redis/bin/[[email protected] ] bin] # lsredis-benchmark redis-check-aof redis-check-dump redis-cli redis-sentinel redis-server 2. を追加します。 >redisサービスへのスクリプトを開始します:
/etc/rc.d/init.dディレクトリにファイルを作成しますredis (説明: /etc/rc.d/init.d/ ディレクトリ内のスクリプトは、システムの起動が実行されます)、次の内容をファイルに追加します: [[email protected] ~]# vim /etc/init.d/redis
#! /bin/ bash
# Redis の初期化ファイル
# chkconfig: - 80 12
# description: redis デーモン
# processname: redis
# config: /etc/redis.conf
# pidfile: /var/run/redis.pid
source /etc/init.d/functions
BIN= "/usr/local/redis/bin"
CONFIG="/etc/redis/redis.conf"PIDFILE="/var/run /redis.pid"
### 構成の読み取り
[ -r "$SYSCONFIG" ] && ソース "$SYSCONFIG"
RETVAL=0
prog= "redis-server"
desc="Redis サーバー"
start() {
if [ -e $PIDFILE ];then
echo " $desc はすでに実行中です...."
exit 1
fi
echo -n $"Starting $desc: "
デーモン$BIN/ $ Prog $ config
Retval = $?
Echo
[$ Retval-EQ 0] && Touch/VAR/LOCK/SUBSYS/$ Prog
> return $RETVAL}stop() { echo -n $"Stop $desc: " killproc $progRETVAL=$? echo [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog $PIDFILE return $ RETVAL }restart() { stop start}case "$1" in 開始) 開始 ;; 停止) 停止
;;
restart)
restart
;;
condrestart)
[ -e / var/lock/ subsys/$prog ] && restart
RETVAL=$?
;;
status)
status $prog
RETVAL= $?
;;
*)
echo $"使用法: $0 {start|stop|restart|condrestart|status}"
RETVAL= 1
esac
exit $RETVAL
redis ディレクトリに構成ファイルを解凍しますredis.conf は /etc/redis/redis.conf にコピーされます ( は redis と一致する必要があります)起動スクリプト内のパスは同じです )
[[email protected] ~]# mkdir /etc/redis
[[email protected] ~]# cp / usr/ src/redis-2.8.21/redis.conf /etc/redis/redis.conf
次に、登録されたサービスに redis を追加します。
[[email protected] ~]# chkconfig --add redis
[[email protected] ~]# chkconfig redis on
[[email protected] ~] # chkconfig --list redis
redis 0:off 1:off 2:on 3:on 4:on 5:on 6:off
再起動redis :
[[email protected] ~]# service redis restart
Redis サーバーを停止: . >
起動が成功したかどうかを確認します:[[email protected] ~]# ps -ef | grep redis root 2984 1 0 13:40 ? /usr /local/bin/redis-server 0.0 0.0:6379 root 2989 2444 0 13:40 pts/1 00:00:00 grep redis 変更/etc/redis/redis.conf
、redis プロセスをバックグラウンド デーモンとして設定し、パスワード :[[ email protected] ~]# vim /etc/redis/6379.conf
daemonize yes //daemonize: バックグラウンド
daemon モードを使用するかどうかrequirepass 20082009 //
パスワードを20082009 に設定します。 完了しました。その後、 redis
:[[email protected] ~]# service redis restart
環境変数ファイルを作成し、次の内容を追加します:
vim /etc/profile
#set redis path
export REDIS_HOME=/usr/local/redis
エクスポート PATH=${REDIS_HOME}/bin:${PATH}
source /etc/profile
3 を通じてすぐに有効にし、redis を呼び出します簡単な操作のための -cli コマンド (パスワード検証が有効かどうかに注意してください):
[[email protected] ~]# redis-cli
127.0.0.1 :6379> ping
(エラー) NOAUTH 認証が必要です。
127.0.0.1:6379> 認証 20082009 //パスワードが必要です
OK
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> (エラー) エラー構文エラー
127.0.0.1:6379> set name "lebron james"
//スペースを含む文字列には "" を追加する必要があります OK
127.0.0.1:6379> 名前を取得
"lebron james"
127.0.0.1:6379>
OK
127.0.0.1:6379> 名前を取得
"lebronjames"
127.0.0.1:6379>
4.php
redis:
phpphpredis の拡張機能をダウンロードします。のソース コード パッケージ phpredis-2.2.4.tar.gz をサーバー上の指定された場所にアップロードして解凍し、解凍されたディレクトリ に入ります。 tar -xvf phpredis-2.2.4.tar.gz
cd phpredis-2.2.4
phpizeを使用してconfigure設定ファイル[[email protected] phpredis-2.2.4]# /usr/local/php/bin/phpize
次に、次のコマンドを実行します:
[[email protected] phpredis-2.2.4]# ./configure --with-php-config=/usr/local/php/bin/php-config
[[email protected] phpredis-2.2.4]# make && make install
Configure
phpSupportphpredis、次の内容を php.ini ファイルに追加します: vim /usr/local/php/lib/php.ini
extension = /usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/
redis.so
その後それぞれ再起動と再起動
nginx、php-fpm、および redis:service nginx restart
service php-fpm restart
service redis restart
次に示すように、
phpinfo()を表示します。 phpExtensionredis成功を示します:
php
が redis を操作する簡単な例:
<?php $redis = new Redis(); $redis->connect('127.0.0.1', '6379') or die ("Could not to connect to redis"); //或者具体主机的IP地址也行 $redis->set("test", “php handle redis"); var_dump($redis->get('test')); echo "<br/>"; $redis->del('test'); //删除赋值 var_dump($redis->get('test')); ?>
出力結果:
結果から、redis が役割を果たしていないことがわかります。後の分析では、パスワード ログイン redis.conf ファイルで設定されていたことがわかりました。 >redis 制限事項。今は、redis.conf を requirepass 20082009 this 内に置くだけです。 #requirepass 20082009 という文をコメントアウトして、redis を再起動します: service redis restart
php ファイルを再度実行すると、次の結果が表示され、php が を操作していることがわかります。 redis成功:
マスター/スレーブマスター/スレーブクラスター構成:
マスター: 172.16.2.33 6379スレーブ:172.16.2.42 63791master には redis が設定されているので、slave を設定するには、次のようにします。
1) redis ソース コード パッケージ redis-2.8.21 .tar.gzscp 経由で スレーブ ホストにリモートでコピーし、解凍し、解凍されたファイルを入力して実行しますコマンド: make PREFIX=/usr/local/redis install。これにより、redis が スレーブ ;2
) 次に、環境変数ファイルを変更します:vim etc/profile、 を追加します。 export REDIS_HOME =/usr/local/redis export PATH=${REDIS_HOME}/bin:${PATH}、source; 3) 次に、
master/etc/init.d/redis ホスト上の slave に対応するディレクトリに移動し、ホスト / 上の master も配置します。 etc/redis/redis。conf ファイルも スレーブ ホストの対応するディレクトリにコピーされます。
4) 次に、ホスト上の slaveredis.conf を変更します。 を変更するだけです。 # スレーブ は IP と に変更されますPORT: つまり、次のように変更します: slaveof 172.16.2.33 6379; 5;次に、
redisを chkconfig リストに追加します。 chkconfig --add redis ; chkconfig redis on;その後、redis:service redis restart;6)
マスターホストに関する情報を表示します: [[email protected] ~]# redis -cli info replication# レプリケーション
role:master
connected_slaves:1
slave0:ip=172.16.2.42,port=63791,state=オンライン、オフセット=924、ラグ=1
master_repl_offset:924
。 。 。
スレーブ ホストの情報を表示します:[[email protected] ~]# redis-cli -p 63791 info replication # レプリケーション
role:slave
master_host:172.16.2.33
master_port:6379
master_link_status:up
。 。 。
7) 書き込み同期テスト (
マスター ホスト上の書き込みデータはスレーブ ホストに同期されます): マスターホスト上:
[[email protected] ~]# redis-cli 127.0.0.1:6379> set name james
OK
127.0.0.1:6379> 名前を取得
"james"
スレーブ
ホスト上:[[email protected] ~]# redis-cli -p 63791127.0.0.1:63791> get name
"james"
127.0.0.1:63791> ; set name "lebron james"
(error) READONLY 読み取り専用スレーブ モードに対して書き込むことはできないため、スレーブはデータを書き込むことができません。マスターサーバーからスレーブサーバーに同期されます)
必要に応じて、スレーブ にもデータを書き込むことができます。構成ファイル redis.conf
を変更します。 slave-read-only はいを slave-read- に変更します。 no のみを実行し、redis を再起動します (これを構成した後、slave はデータを書き込むように構成できますが、以下に示すように、マスター とは同期しません:) マスター上の スレーブ: [[ email protected] ~]# redis-cli -p 63791 127.0.0.1:63791> set name "lebron james"OK
127.0.0.1:63791> get;名前「レブロン・ジェームズ」
ホスト上のマスター (スレーブ ホスト上のデータは マスター と同期されていません):
[[email protected] ~]# redis-cli
127.0.0.1:6379> 名前
"james"
127.0 を取得します。 0.1: 6379>
著作権表示: この記事はブロガーによるオリジナルの記事であり、ブロガーの許可なく複製することはできません。