返回顶部
首页 > 资讯 > 数据库 >MySQL+Redis缓存+Gearman共同构建数据库缓存的方法
  • 383
分享到

MySQL+Redis缓存+Gearman共同构建数据库缓存的方法

2024-04-02 19:04:59 383人浏览 薄情痞子
摘要

目录前言一、前端搭建1、Nginx部署2、PHP部署安装以及模块安装二、后端部署1.Mysql部署2.Redis作为缓存的部署以及安装三、germand分布式缓存位置部署1、gearman原理2、C端部署3、S端部署总结

前言

一、前端搭建

1、Nginx部署

安装部署Nginx

yum install unzip openssl-devel pcre-devel GCc make -y 
tar -zxf nginx-1.22.0.tar.gz
./configure --with-Http_stub_status_module --with-http_ssl_module --with-file-aio --add-module=/root/nginx-Goodies-nginx-sticky-module-ng-08a395c66e42/
make -j 2 && make install
ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/nginx
vim nginx.conf
          location ~ \.php$ {
              root           html;
              fastcgi_pass   127.0.0.1:9000;
              fastcgi_index  index.php;
          #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
              include        fastcgi.conf;
          }

2、php部署安装以及模块安装

php安装同时部署相应的兼容模块方式

yum install php php-fpm -y 
yum install php-pecl-gearman-1.1.2-1.el7.x86_64.rpm php-pecl-igbinary-1.2.1-1.el7.x86_64.rpm php-pecl-redis-2.2.8-1.el7.x86_64.rpm php-fpm-5.4.16-46.el7.x86_64.rpm -y
systemctl start php-fpm.serrvice

将编写好的php放置到Nginx的默认发布目录位置

vim test.php
<?php
        $redis = new Redis();
        $redis->connect('192.168.63.102',6379) or die ("could net connect redis server");
  #      $query = "select * from test limit 9";
        $query = "select * from test";
        for ($key = 1; $key < 10; $key++)
        {
                if (!$redis->get($key))
                {
                        $connect = mysql_connect('192.168.63.109','redis','Dockerps-A1');
                        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 <font color=#FF0000>$key</font>";
                echo "<br>";
                echo "name is <font color=#FF0000>$data[$key]</font>";
                echo "<br>";
        }
?>

二、后端部署

1.MySQL部署

1.建立用户设定远程登录

yum install mariadb-server -y
systemctl start mariadb.service

部署后在MySQL端进行创建一个用户给与远程登录权限,使得Redis作为缓存可以用来同步数据使用
建立test表保证有可以查看的数据

MariaDB [test]> CREATE USER redis@'%' IDENTIFIED BY 'dockerps-A1' ;
MariaDB [test]> CREATE TABLE `test` (`id` int(7) NOT NULL AUTO_INCREMENT, `name` char(8) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
MariaDB [test]> INSERT INTO `test` VALUES (1,'test1'),(2,'test2'),(3,'test3'),(4,'test4'),(5,'test5'),(6,'test6'),(7,'test7'),(8,'test8'),(9,'test9');
MariaDB [test]> grant all on test.* to redis@'%';

2.注册UDF函数

yum install mariadb-devel -y			#下载对应的开发包
unzip lib_mysqludf_JSON-master.zip
gcc $(mysql_config --cflags) -shared -fPIC -o lib_mysqludf_json.so lib_mysqludf_json.c
										#利用udf函数使得其生成UDF函数
MariaDB [(none)]> show global variables like 'plugin_dir';
										#查看函数的存储目录
cp lib_mysqludf_json.so /usr/lib64/mysql/plugin/
MariaDB [(none)]> CREATE FUNCTION json_object RETURNS STRING SONAME 'lib_mysqludf_json.so';	

2.Redis作为缓存的部署以及安装

 make -j 2 && make install 
 ./utils/install_server.sh

三、germand分布式缓存位置部署

1、gearman原理

这里C端为MySQL的UDF函数节点通过已经注册的UDF函数和触发器结合使数据发生改变后将数据的更改通知到前端gearmand节点使其从Redis节点从新同步发生改变的数据
S端为前端worker节点即前端gearmand,同样需要在php环境中兼容这个插件的模块

2、C端部署

./configure --with-mysql=/usr/bin/mysql_config --libdir=/usr/lib64/mysql/plugin/
make -j 2 && make install 
MariaDB [(none)]> CREATE FUNCTION gman_do_background RETURNS STRING SONAME 'libgearman_mysql_udf.so';
MariaDB [(none)]> CREATE FUNCTION gman_servers_set RETURNS STRING SONAME 'libgearman_mysql_udf.so';
									#注册Gearman的UDF函数使其可以正常调用数据库的内容
MariaDB [(none)]> SELECT gman_servers_set('192.168.63.101:4730');
									#IP为S端IP以及端口为gearmand的运行端口
vim trigger.sql
use test;
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、S端部署

yum install gearmand-1.1.12-18.el7.x86_64.rpm libgearman-1.1.12-18.el7.x86_64.rpm -y
systemctl start gearmand.service

编写worker文件

vim worker.php

<?php
$worker = new GearmanWorker();
$worker->addServer();
$worker->addFunction('syncToRedis', 'syncToRedis');

$redis = new Redis();
$redis->connect('192.168.63.102', 6379);

while($worker->work());
function syncToRedis($job)
{
        global $redis;
        $workString = $job->workload();
        $work = json_decode($workString);
        if(!isset($work->id)){
                return false;
        }
        $redis->set($work->id, $work->name);
}
?>

总结

到此这篇关于MySQL+Redis缓存+Gearman共同构建数据库缓存的文章就介绍到这了,更多相关Redis Gearman数据库缓存内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL+Redis缓存+Gearman共同构建数据库缓存的方法

本文链接: https://lsjlt.com/news/44940.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MySQL+Redis缓存+Gearman共同构建数据库缓存的方法
    目录前言一、前端搭建1、Nginx部署2、php部署安装以及模块安装二、后端部署1.mysql部署2.Redis作为缓存的部署以及安装三、germand分布式缓存位置部署1、gearman原理2、C端部署3、S端部署总结...
    99+
    2024-04-02
  • redis缓存同步数据库的方法
    这篇文章将为大家详细讲解有关redis缓存同步数据库的方法,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。缓存数据与持久化数据的一致性,这个问题总结了一下(看...
    99+
    2024-04-02
  • redis缓存数据库中数据的方法
    本文实例为大家分享了Redis缓存数据库中数据的具体代码,供大家参考,具体内容如下 将数据库的数据保存到redis缓存 当第一次查询时,缓存没有对应的数据,则会查询数据库,并将数据更新到缓存当缓存中有对应的数据时,则会直...
    99+
    2022-07-28
    redis缓存数据库数据 redis缓存数据库 redis缓存数据
  • Redis缓存数据库(一)
    先导知识:Memcache Memcache是一个高性能的分布式内存对象缓存系统,代码类似于Hash。 已经有了Memcache,为什么还要用Redis呢? 下面Memcache的缺点: 不支持数据持久化存储 不支持主从 不支持...
    99+
    2019-11-20
    Redis缓存数据库(一)
  • MySQL数据怎么同步到Redis缓存
    这篇“MySQL数据怎么同步到Redis缓存”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“MySQL数据怎么同步到Redis...
    99+
    2023-07-05
  • node.js利用redis数据库缓存数据的方法
    一、运行redis Redis服务器默认使用6379端口 redis-server 自定义端口 redis-server port 6390 客户端 redis-cli 指定ip和端口连接...
    99+
    2022-06-04
    缓存 数据库 方法
  • 浅谈MySQL数据同步到Redis缓存的几种方法
    目录1 Mysql查完数据,再同步写入到Redis中2 Mysql查完数据,通过发送MQ,在消费者线程去同步Redis3 订阅Mysql的Binlog文件(可借助Canal来进行)4...
    99+
    2023-03-19
    MySQL数据同步到Redis缓存 MySQL数据同步
  • 浅谈MySQL数据同步到 Redis 缓存的几种方法
    目录1 mysql查完数据,再同步写入到Redis中2 Mysql查完数据,通过发送MQ,在消费者线程去同步Redis3 订阅Mysql的Binlog文件(可借助Canal来进行)4 延迟双删5 延迟双写6 总结1 My...
    99+
    2023-03-19
    MySQL数据同步到Redis缓存 MySQL数据同步
  • MySQL 与 Redis 缓存的同步方案
    MySQL 与 Redis 缓存的同步方案 概述 MySQL 和 Redis 都是常见的数据存储方案,MySQL 用于存储结构化数据,Redis 用于存储非结构化数据。在一些高并发场景下,为了提升系统...
    99+
    2023-09-14
    redis 缓存 mysql
  • redis缓存热点数据的方法
    这篇文章将为大家详细讲解有关redis缓存热点数据的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。对于热点数据(经常会被查询,但是不经常被修改或者删除的数据),首选是...
    99+
    2024-04-02
  • redis清除缓存数据的方法
    本篇文章给大家分享的是有关redis清除缓存数据的方法,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Windows环境下使用命令行进行redi...
    99+
    2024-04-02
  • redis是缓存数据库吗
    是,redis是一个缓存数据库。redis(remote dictionary server)是一种键值存储数据库,专门用于快速访问和存储数据,并具有高性能、低延迟、可扩展性和持久性。 ...
    99+
    2024-04-20
    redis
  • mysql数据快速导入redis缓存方法
    本文主要给大家简单讲讲mysql数据快速导入redis缓存方法,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望mysql数据快速导入redis缓存方法这篇文章...
    99+
    2024-04-02
  • Redis缓存和MySQL数据一致性的方法
    这篇“Redis缓存和MySQL数据一致性的方法”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这...
    99+
    2024-04-02
  • mysql 数据导入redis缓存
    假设表结构如下 CREATE TABLE sas_sys_app (user_id varchar(38) DEFAULT NULL,app_id int(11) DEFAULT NULL) EN...
    99+
    2024-04-02
  • PHP redis 缓存数据库(成功)
     PHP redis 缓存数据库(成功)原文:https://www.cnblogs.com/summerGraden/p/13273974.html...
    99+
    2016-11-01
    PHP redis 缓存数据库(成功) 数据库入门 数据库基础教程
  • redis缓存用什么数据结构
    redis 缓存支持多种数据结构,包括:字符串、哈希表、列表、集合、有序集合、地理空间数据类型、hyperloglog 和位图。每种数据结构都针对特定应用场景进行了优化,从而提高了 re...
    99+
    2024-04-02
  • redis清缓存的方法
    这篇文章将为大家详细讲解有关redis清缓存的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.访问redis根目录    cd  /u...
    99+
    2024-04-02
  • 浅谈MySQL与redis缓存的同步方案
    目录一、方案1(UDF)演示案例二、方案2(解析binlog)Canal开源技术三、附加本文介绍MySQL与Redis缓存的同步的两种方案 方案1:通过MySQL自动同步刷新R...
    99+
    2024-04-02
  • 缓存数据库Redis——Redis群集部署
    实验环境 用两台服务器模拟6台服务器(添加网卡) 主服务器Redis1: ens33: 192.168.52.150 ens36: 192.168.52.153 ens37: ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作