redis安裝及應用

Redis安裝及主從配置php

server2,3,4.html

安裝mysql

tar zxf redis-4.0.1.tar.gznginx

cd redis-4.0.1web

yum install -y gccredis

makesql

make install數據庫

cd utils/json

./install_server.shvim

cd /etc/redis/

vim 6379.conf

 

 

/etc/init.d/redis_6379 restart

redis-cli

 

 

 

 

server3,4

主從配置(2主,3,4從)

vim /etc/redis/6379.conf

 

 

 

 

/etc/init.d/redis_6379 restart

此時在server2中redis寫入,server2,3會自動複製

 

Redis高可用

 

 

[root@server2 ~]# cd redis-4.0.1

[root@server2 redis-4.0.1]# cp sentinel.conf /etc/redis/

[root@server2 redis-4.0.1]# cd /etc/redis/

[root@server2 redis]# vim sentinel.conf

 

 

 

 

 

[root@server2 redis]# scp sentinel.conf  root@172.25.8.3:/etc/redis/

[root@server2 redis]# scp sentinel.conf  root@172.25.8.4:/etc/redis/

[root@server2 redis]# redis-sentinel /etc/redis/sentinel.conf     ##將三臺機子都啓動sentinel服務

 

 

server3

[root@server3 redis]# redis-sentinel /etc/redis/sentinel.conf

 

 

server4

[root@server4 ~]# redis-sentinel /etc/redis/sentinel.conf

 

 

 

server2:

[root@server2 ~]# redis-cli -p 26379

127.0.0.1:26379> info

 

 

 

此時,中止server2redis服務:

[root@server2 ~]# redis-cli

127.0.0.1:6379> SHUTDOWN

not connected>

 

 

 

 

 

會發現server3選舉成爲新的master

[root@server2 ~]# redis-cli -p 26379

127.0.0.1:26379> info

 

 

 

 

 

[root@server2 ~]# vim /etc/redis/6379.conf   將2做爲從再次開啓

 

 

 

 

[root@server2 redis]# /etc/init.d/redis_6379 start

[root@server2 redis]# redis-cli

127.0.0.1:6379> info

 

 

 

redis集羣

 

[root@server2 ~]# cd /usr/local/

[root@server2 local]# mkdir cluster       ##創建集羣目錄

[root@server2 local]# cd cluster/

[root@server2 cluster]# mkdir 700{1..6}

[root@server2 cluster]# cd 7001/

[root@server2 7001]# vim redis.conf(其他依法操做,只需修改相應port參數)

 

 

[root@server2 7001]# redis-server redis.conf         ##打開集羣服務

[root@server2 7001]# cd ..

[root@server2 cluster]# cp 7001/redis.conf  7002/

[root@server2 cluster]# cp 7001/redis.conf  7003

[root@server2 cluster]# cp 7001/redis.conf  7004

[root@server2 cluster]# cp 7001/redis.conf  7005

[root@server2 cluster]# cp 7001/redis.conf  7006

[root@server2 cluster]# cd 7002/

[root@server2 7002]# ls

redis.conf

[root@server2 7002]# vim redis.conf

[root@server2 7002]# redis-server redis.conf

[root@server2 7002]# cd ..

[root@server2 cluster]# cd 7003/

[root@server2 7003]# vim redis.conf

[root@server2 7003]# redis-server redis.conf

[root@server2 7003]# cd ..

[root@server2 cluster]# cd 7004/

[root@server2 7004]# vim redis.conf

[root@server2 7004]# redis-server redis.conf

[root@server2 7004]# cd ..

[root@server2 cluster]# cd 7005/

[root@server2 7005]# vim redis.conf

[root@server2 7005]# redis-server redis.conf

[root@server2 cluster]# cd 7006/

[root@server2 7006]# vim redis.conf

[root@server2 7006]# redis-server redis.conf

 

[root@server2 7006]# cd

[root@server2 ~]# cd redis-4.0.1

[root@server2 redis-4.0.1]# cd src/

[root@server2 src]# cp redis-trib.rb /usr/local/bin/

[root@server2 src]# cd

[root@server2 ~]# yum install rubygems-1.3.7-5.el6.noarch.rpm -y

[root@server2 ~]# yum install libyaml-0.1.3-4.el6_6.x86_64.rpm  ruby-2.2.3-1.el6.x86_64.rpm   ##安裝依賴包

[root@server2 ~]# gem install --local redis-4.0.1.gem

 

 

[root@server2 ~]# redis-trib.rb create --replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006    ##建立集羣

 

 

[root@server2 ~]# redis-trib.rb check 127.0.0.1

[root@server2 ~]# redis-cli -c  -p 7001

127.0.0.1:7001> set name westos

-> Redirected to slot [5798] located at 127.0.0.1:7002   ##提示內容會轉到7002上

OK[root@server2 ~]# redis-cli -c  -p 7001

127.0.0.1:7001> get name

-> Redirected to slot [5798] located at 127.0.0.1:7002

"westos"

 

 

[root@server2 ~]# redis-cli -c  -p 7002

127.0.0.1:7002> get name

"westos"

127.0.0.1:7002>

[root@server2 ~]# redis-cli -c  -p 7006

127.0.0.1:7006> get name

-> Redirected to slot [5798] located at 127.0.0.1:7002

"westos"

127.0.0.1:7002>

 

 

[root@server2 ~]# redis-cli -p 7002

127.0.0.1:7002> SHUTDOWN    ##關閉一個master,會發現集羣會繼續運行

not connected>

[root@server2 ~]# redis-trib.rb check 127.0.0.1:7001    ##查看集羣狀態

 

 

[root@server2 ~]# redis-cli -c -p 7001

127.0.0.1:7001> get name

-> Redirected to slot [5798] located at 127.0.0.1:7005

"westos"

127.0.0.1:7005>

 

root@server2 ~]# redis-cli -c -p 7005     ##再關閉一個master,這時集羣會down掉

127.0.0.1:7005> SHUTDOWN

not connected>

[root@server2 ~]# redis-cli  -c -p 7001

127.0.0.1:7001> get name

(error) CLUSTERDOWN The cluster is down

 

 

 

 

Redis用做mysql緩存

Server3:redis -master

Server4:redis-slave lnmp

Server1:mysql

server1:

[root@server1 ~]# yum install -y mysql-server

[root@server1 ~]# /etc/init.d/mysqld start

[root@server1 ~]# mysql

mysql> show databases;

mysql> grant all on test.* to redis@'%' identified by 'westos'; ##遠程登錄用戶受權

 

 

 

server4;

[root@server4 ~]# cd redis/

[root@server4 redis]# rpm -ivh nginx-1.8.0-1.el6.ngx.x86_64.rpm 安裝nginx與php

[root@server4 redis]# yum install -y php*

[root@server4 redis]# cd /etc/nginx/

[root@server4 nginx]# cd

[root@server4 ~]# vim /etc/php.ini

修改時區

 

 

[root@server4 ~]# cd /etc/php.d/

[root@server4 php.d]# /etc/init.d/php-fpm start

[root@server4 php.d]# /etc/init.d/php-fpm reload

[root@server4 php.d]# cd /etc/

 [root@server4 etc]# cd php-fpm.d/

[root@server4 php-fpm.d]# vim www.conf( 將29行和41行後的改成nginx)

 

 

[root@server4 php-fpm.d]# /etc/init.d/php-fpm reload

 

配置nginx

[root@server4 php-fpm.d]# cd /etc/nginx/

[root@server4 nginx]# cd conf.d/

[root@server4 conf.d]# vim default.conf

 

 

 

 

 

[root@server4 conf.d]# /etc/init.d/nginx start

[root@server4 conf.d]# cd /usr/share/nginx/html/

[root@server4 html]# vim index.php (編輯一個PHP默認訪問頁面)

訪問172.25.8.4

 

 

 

 

[root@server4 ~]# cd redis/      ##(這裏有一個寫好的測試頁面)

 [root@server4 redis]# cp test.php  /usr/share/nginx/html/

[root@server4 redis]# cd /usr/share/nginx/html/

[root@server4 html]# vim test.php

 

 

[root@server4 html]# yum install unzip -y

[root@server4 ~]# cd redis/

[root@server4 redis]# unzip phpredis-master.zip

[root@server4 redis]# cd phpredis-master

 [root@server4 phpredis-master]# phpize

Configuring for:

PHP Api Version:         20090626

Zend Module Api No:      20090626

Zend Extension Api No:   220090626

[root@server4 phpredis-master]# ./configure

[root@server4 phpredis-master]# make

[root@server4 phpredis-master]# make install

cd /etc/php.d/

[root@server4 php.d]# ls

curl.ini      json.ini      mysql.ini      pdo_sqlite.ini  zip.ini

fileinfo.ini  mbstring.ini  pdo.ini        phar.ini

gd.ini        mysqli.ini    pdo_mysql.ini  sqlite3.ini

[root@server4 php.d]# cp mysql.ini redis.ini

[root@server4 php.d]# vim redis.ini

 

 

[root@server4 php.d]# /etc/init.d/php-fpm reload

 [root@server4 php.d]# php -m |grep redis

 

 

 

[root@server4 ~]# cd redis/     ##有一個本身寫好用來測試的test.sql

[root@server4 redis]# mysql -h 172.25.8.1 -u redis -p < test.sql      ##導入到數據庫中

Enter password:

 

server1:

mysql> use test

mysql> show tables;

mysql> select * from test;

 

 

 

訪問web頁面

 

 

 

至此,Redeis用做mysql緩存已完成,但會有一個問題,此時若是在數據庫中更新表中內容,redis卻不會更新,會出現數據不一樣步的現象,此時就須要mysql經過觸發器改變數據同步到redis。

 

經過gearman實現數據同步

 

server4:

[root@server4 redis]# yum install -y gearmand-1.1.8-2.el6.x86_64.rpm libgearman-* libevent-*

[root@server4 redis]# /etc/init.d/gearmand start

[root@server4 redis]# scp lib_mysqludf_json-master.zip  gearman-mysql-udf-0.6.tar.gz root@172.25.8.1:

 

 

server1:

[root@server1 ~]# yum install unzip -y

[root@server1 ~]# unzip lib_mysqludf_json-master.zip

[root@server1 ~]# ls

gearman-mysql-udf-0.6.tar.gz  lib_mysqludf_json-master.zip

lib_mysqludf_json-master

[root@server1 ~]# cd lib_mysqludf_json-master

[root@server1 lib_mysqludf_json-master]# ls

lib_mysqludf_json.c     lib_mysqludf_json.so   README.md

lib_mysqludf_json.html  lib_mysqludf_json.sql

[root@server1 lib_mysqludf_json-master]# yum install gcc -y

[root@server1 lib_mysqludf_json-master]# yum install -y mysql-devel

[root@server1 lib_mysqludf_json-master]# gcc $(mysql_config --cflags) -shared -fPIC -o lib_mysqludf_json.so lib_mysqludf_json.c

[root@server1 ~]# ls

gearman-mysql-udf-0.6.tar.gz  lib_mysqludf_json-master.zip

lib_mysqludf_json-master

[root@server1 ~]# cd lib_mysqludf_json-master

 [root@server1 lib_mysqludf_json-master]# cp lib_mysqludf_json.so /usr/lib64/mysql/plugin/

[root@server1 lib_mysqludf_json-master]# mysql

mysql> CREATE FUNCTION json_object RETURNS STRING SONAME 'lib_mysqludf_json.so';

              ##註冊udf函數

mysql> select * from mysql.func;

 

 

 

 

[root@server1 ~]# tar zxf gearman-mysql-udf-0.6.tar.gz

[root@server1 ~]# cd gearman-mysql-udf-0.6

[root@server1 ~]# yum install -y libgearman-* libevent-*

[root@server1 gearman-mysql-udf-0.6]# ./configure --with-mysql --libdir=/usr/lib64/mysql/plugin/

[root@server1 gearman-mysql-udf-0.6]# make

[root@server1 gearman-mysql-udf-0.6]# make install

[root@server1 ~]# mysql    ##註冊udf函數

mysql> CREATE FUNCTION gman_do_background RETURNS STRING SONAME 'libgearman_mysql_udf.so';

mysql> CREATE FUNCTION gman_servers_set RETURNS STRING SONAME 'libgearman_mysql_udf.so';

mysql> select * from mysql.func;

 

 

mysql> SELECT gman_servers_set('172.25.8.4:4730');

 

 

 

 

server4:

[root@server4 redis]# vim test.sql

 

 

[root@server4 redis]# mysql -h 172.25.8.1 -u redis -p < test.sql

 

server1:

mysql> SHOW TRIGGERS FROM test;  ##查看觸發器

 

 

 

server4:

[root@server4 redis]# tar zxf gearman-1.1.2.tgz

[root@server4 redis]# cd gearman-1.1.2

[root@server4 gearman-1.1.2]# phpize

[root@server4 gearman-1.1.2]# ./configure

[root@server4 gearman-1.1.2]# make

[root@server4 gearman-1.1.2]# make install

[root@server4 gearman-1.1.2]# cd /etc/php.d/

[root@server4 php.d]# cp redis.ini gearman.ini

[root@server4 php.d]# vim gearman.ini

 

 

[root@server4 php.d]# /etc/init.d/php-fpm reload

[root@server4 php.d]# cd

[root@server4 ~]# cd redis/

[root@server4 redis]# cp worker.php  /usr/local/

[root@server4 redis]# cd /usr/local/

[root@server4 local]# vim worker.php

 

 

[root@server4 local]# nohup php /usr/local/worker.php &

 

 

server1:

mysql> use test;

mysql> update test set name='hello' where id=1;   ##更新數據

mysql> select * from test;

 

 

 

server3:

[root@server3 redis]# redis-cli

127.0.0.1:6379> get 1

"hello"

 

頁面訪問;

172.25.8.4/test.php

 

 

 

Ok。

相關文章
相關標籤/搜索