微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Gearman实现Mysql到Redis的数据同步

redis数据库结合,作为数据库数据的缓存提供给前端
一.实现数据库PHP,http和redis的架构

server1提供http服务,使用PHP语言;
server2提供redis缓存服务;
server3提供后端数据库服务…

大概流程 :客户端通过NginxPHP访问后端数据库时,先在redis这个数据库缓存中查找,看是否含有想要的数据,如果没有就去后端数据库查找,将查找到数据返回给客户端一份,另外在redis中缓存一份….下次如果访问相同的数据就直接去redis,缩短时间同时也减轻数据库的查找压力

1.server1安装http,PHPPHP-MysqL

yum install -y httpd PHP PHP-MysqL

2.获取测试页面test.PHP修改后放到httpd发布目录

vim test.PHP
mv test.PHP /var/www/html/
systemctl start httpd

<?PHP
        $redis = new Redis();
        $redis->connect('172.25.40.2',6379) or die ("Could net connect redis server");
         #redis主机IP
  #      $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.40.3','redis','redhat'); # 连接数据库,ip,用户,密码
                        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 "<br>";
        for ($key = 1; $key < 10; $key++)
        {
                echo "number is <b><font color=#FF0000>$key</font></b>";
 
                echo "<br>";
 
                echo "name is <b><font color=#FF0000>$data[$key]</font></b>";
 
                echo "<br>";
        }
?>

3.PHP添加redis模块

PHP -m | grep MysqL
PHP -m | grep redis

在这里插入图片描述


源码编译PHP与redis的连接软件—PHPredis-master.zip

unzip PHPredis-master.zip 
cd PHPredis-master/
PHPize  # 创建预编译环境

报错:

Can't find PHP headers in /usr/include/PHP
The PHP-devel package is required for use of this command.

网上下载安装同版本PHP-devel

yum install -y PHP-devel-5.4.16-42.el7.x86_64.rpm 
cd PHPredis-master/
PHPize   # 创建预编译环境
./configure --help
 ./configure --enable-redis
make && make install   # 源码编译安装

进入目录/usr/lib64/PHP/modules/下,查看编译后存在的模块文件

在这里插入图片描述

cd /etc/PHP.d/
cp MysqL.ini redis.ini
vim redis.ini 
extension=redis.so

4.在PHP配置文件修改时区

vim /etc/PHP.ini 
date.timezone = Asia/Shanghai

重启httpd查看已经加载的模块
systemctl restart httpd
PHP -m | grep redis

在这里插入图片描述

server2安装redis

vim /etc/redis/6379.conf
systemctl start redis_6379
ps ax
server3
systemctl stop redis_6379
67 chkconfig redis_6379 off
68 yum install -y mariadb-server
69 systemctl start mariadb
70 MysqL
71 ls
72 MysqL < test.sql
73 MysqL
select * from test.test;
MariaDB [(none)]> grant all on test.* to redis@’%’ identified by ‘redhat’;

update test set name=‘redhat’ where id=1;

更新后无法自动同步

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐