数据库教程:redis服务器环境下mysql实现lnmp架构缓存

配置环境:redhat6.5 server1:redis(172.25.254.1) server2:php(172.25.254.2) server3:mysql(

配置环境:redhat6.5

server1:redis(172.25.254.1)

server2:php(172.25.254.2)

server3:mysql(172.25.254.3)

配置步骤:

server2:

1、server2安装php的redis相应模块

redis服务器环境下mysql实现lnmp架构缓存

2、nginx安装

  [root@server2 php-fpm.d]# rpm -ivh nginx-1.8.0-1.el6.ngx.x86_64.rpm   warning: nginx-1.8.0-1.el6.ngx.x86_64.rpm: header v4 rsa/sha1 signature, key id 7bd9bf62: nokey  preparing...        ########################################### [100%]    1:nginx         ########################################### [100%]  ----------------------------------------------------------------------   thanks for using nginx!     please find the official documentation for nginx here:  * https://nginx.org/en/docs/  commercial subscriptions for nginx are available on:  * https://nginx.com/products/     ----------------------------------------------------------------------  [root@server2 php-fpm.d]# id nginx  uid=498(nginx) gid=499(nginx) groups=499(nginx)

3、nginx和php配置

1、php配置

  [root@server2 php-fpm.d]# cd /etc/php-fpm.d/  [root@server2 php-fpm.d]# id nginx  uid=498(nginx) gid=499(nginx) groups=499(nginx)  [root@server2 php-fpm.d]# vim www.conf    39 user = nginx   41 group = nginx   [root@server2 php-fpm.d]# vim /etc/php.ini   946 date.timezone = asia/shanghai  [root@server2 php-fpm.d]# /etc/init.d/php-fpm start  starting php-fpm:                     [ ok ]  [root@server2 php-fpm.d]# netstat -antlp | grep php  tcp    0   0 127.0.0.1:9000       0.0.0.0:*          listen   1125/php-fpm      [root@server2 php-fpm.d]# vim /etc/php.ini

2、nginx配置

  [root@server2 ~]# cd /etc/nginx/conf.d/  [root@server2 conf.d]# ls  default.conf example_ssl.conf  [root@server2 conf.d]# vim default.conf    10     index index.php index.html index.htm;   30   location ~ .php$ {   31     root      html;   32     fastcgi_pass  127.0.0.1:9000;   33     fastcgi_index index.php;   34     fastcgi_param script_filename /usr/share/nginx/html$fastcgi_script  _name;   35     include    fastcgi_params;   36   }  [root@server2 conf.d]# nginx -t  nginx: the configuration file /etc/nginx/nginx.conf syntax is ok  nginx: configuration file /etc/nginx/nginx.conf test is successful  [root@server2 conf.d]# nginx   [root@server2 conf.d]# netstat -anplt |grep nginx  tcp    0   0 0.0.0.0:80         0.0.0.0:*          listen   1141/nginx

redis服务器环境下mysql实现lnmp架构缓存

php测试:

  [root@server2 conf.d]# cd /usr/share/nginx/html/  [root@server2 html]# vim index.php  [root@server2 html]# cat index.php   <!--php  phpinfo()  -->  [root@server2 html]# /etc/init.d/php-fpm reload  reloading php-fpm: [14-jul-2018 01:09:13] notice: configuration file /etc/php-fpm.conf test is successful                                [ ok ]

物理机访问:

redis服务器环境下mysql实现lnmp架构缓存

4、php配置redis+mysql

  [root@server2 ~]# cd /usr/share/nginx/html/  [root@server2 html]# vim test.php     <!--php        $redis = new redis();        $redis--->connect('172.25.254.1',6379) or die ("could net connect redi  s server");     #   $query = "select * from test limit 9";        $query = "select * from test";        for ($key = 1; $key < 10; $key++)        {            if (!$redis->get($key))            {               $connect = mysql_connect('172.25.254.3','redis','wes  tos');               mysql_select_db(test);               $result = mysql_query($query);               //如果没有找到$key,就将该查询sql的结果缓存到redis               while ($row = mysql_fetch_assoc($result))               {                   $redis->set($row['id'],$row['name']);               }               $myserver = 'mysql';               break;           }           else           {               $myserver = "redis";               $data[$key] = $redis->get($key);           }       }       echo $myserver;       echo "  ";       for ($key = 1; $key < 10; $key++)       {          echo "number is $key";          echo "  ";          echo "name is $data[$key]"  ;          echo "  ";     }  >

5、添加php支持的redis模块

  [root@server2 ~]# unzip phpredis-master.zip   [root@server2 ~]# cd phpredis-master  [root@server2 phpredis-master]# phpize   configuring for:  php api version:     20090626  zend module api no:   20090626  zend extension api no:  220090626  [root@server2 phpredis-master]# ls  acinclude.m4  config.sub   library.c     readme.markdown  aclocal.m4   configure    library.h     redis.c  autom4te.cache configure.in  ltmain.sh     redis_session.c  build      credits     makefile.global  redis_session.h  common.h    debian     missing      run-tests.php  config.guess  debian.control mkdeb-apache2.sh serialize.list  config.h.in   igbinary    mkinstalldirs   tests  config.m4    install-sh   php_redis.h  [root@server2 phpredis-master]# ./configure   [root@server2 phpredis-master]# make && make install   [root@server2 ~]# cd /etc/php.d/  [root@server2 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@server2 php.d]# cp mysql.ini redis.ini  [root@server2 php.d]# vim redis.ini    2 extension=redis.so   [root@server2 php.d]# /etc/init.d/php-fpm reload  reloading php-fpm: [14-jul-2018 01:21:56] notice: configuration file /etc/php-fpm.conf test is successful                                [ ok ]  [root@server2 php.d]# php -m |grep redis  redis  server3:mysql配置

1、安装mysql-server

  [root@server3 ~]# rpm -qa | grep mysql  mysql-community-common-5.7.17-1.el6.x86_64  mysql-community-client-5.7.17-1.el6.x86_64  mysql-community-libs-compat-5.7.17-1.el6.x86_64  mha4mysql-node-0.56-0.el6.noarch  mysql-community-libs-5.7.17-1.el6.x86_64  mysql-community-server-5.7.17-1.el6.x86_64  [root@server3 ~]# rpm -e `rpm -qa|grep mysql` --nodeps  ##不考虑依赖性删除mysql  warning: /etc/my.cnf saved as /etc/my.cnf.rpmsave  [root@server3 ~]# rpm -qa | grep mysql  [root@server3 ~]# cd /var/lib/mysql/  [root@server3 mysql]# rm -fr *  [root@server3 mysql]# ls  [root@server3 mysql]# yum install -y mysql-server ##安装

2、开启mysql,并导入测试数据库

  [root@server3 ~]# /etc/init.d/mysqld start  [root@server3 ~]# mysql < test.sql  [root@server3 ~]# mysql < test.sql   [root@server3 ~]# cat test.sql   use test;  create table `test` (`id` int(7) not null auto_increment, `name` char(8) default null, primary key (`id`)) engine=innodb default charset=utf8;  insert into `test` values (1,'test1'),(2,'test2'),(3,'test3'),(4,'test4'),(5,'test5'),(6,'test6'),(7,'test7'),(8,'test8'),(9,'test9');  #delimiter $$  #create trigger datatoredis after update on test for each row begin  #  set @recv=gman_do_background('synctoredis', json_object(new.id as `id`, new.name as `name`));   # end$$  #delimiter ;

3、数据库授权

  [root@server3 ~]# mysql  mysql> grant all on test.* to redis@'%' identified by 'westos';  query ok, 0 rows affected (0.00 sec)  mysql> select * from test.test;  +----+-------+  | id | name |  +----+-------+  | 1 | test1 |  | 2 | test2 |  | 3 | test3 |  | 4 | test4 |  | 5 | test5 |  | 6 | test6 |  | 7 | test7 |  | 8 | test8 |  | 9 | test9 |  +----+-------+  9 rows in set (0.00 sec)

测试:访问172.25.254.2/test.php

1、php默认从redis 索取数据,第一次redis无缓存,则php从mysql’索取数据

第一次无缓存

redis服务器环境下mysql实现lnmp架构缓存

第二次索取数据后:

redis服务器环境下mysql实现lnmp架构缓存

redis节点也可查看

  [root@server1 redis-4.0.1]# redis-cli  127.0.0.1:6379> get 2  "test2"

2、将数据库server3节点内容更新并删除节点,则php从数据库索取数据节点更新内容

  mysql> update test.test set name='westos' where id=1;  query ok, 1 row affected (0.05 sec)  rows matched: 1 changed: 1 warnings: 0  mysql> select * from test.test;  +----+--------+  | id | name  |  +----+--------+  | 1 | westos |  | 2 | test2 |  | 3 | test3 |  | 4 | test4 |  | 5 | test5 |  | 6 | test6 |  | 7 | test7 |  | 8 | test8 |  | 9 | test9 |  +----+--------+  9 rows in set (0.00 sec)

redis的master主机删除节点内容

  [root@server1 redis-4.0.1]# redis-cli  127.0.0.1:6379> get 2  "test2"  127.0.0.1:6379> del 1  (integer) 1  127.0.0.1:6379> get 1  (nil)

刷新页面,再次访问

redis服务器环境下mysql实现lnmp架构缓存

以上redis 作为 mysql 的缓存服务器,但是如果更新了 mysql,redis中仍然会有对应的 key,数据就不会更新,此时就会出现 mysql 和 redis 数据不一致的情况。

总结

以上所述是小编给大家介绍的redis服务器环境下mysql实现lnmp架构缓存,希望对大家有所帮助

需要了解更多数据库技术:redis服务器环境下mysql实现lnmp架构缓存,都可以关注数据库技术分享栏目—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/dtteaching/828598.html

(0)
上一篇 2021年9月18日
下一篇 2021年9月18日

精彩推荐