中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

搭建redis+mysql架構的詳細步驟

發布時間:2020-05-26 16:36:55 來源:網絡 閱讀:381 作者:三月 欄目:數據庫

下面一起來了解下搭建redis+mysql架構的詳細步驟,相信大家看完肯定會受益匪淺,文字在精不在多,希望搭建redis+mysql架構的詳細步驟這篇短內容是你想要的。

redis+mysql框架搭建

   redis是一個key-value存儲系統。和memcached類似,不過redis支持的value類型更多,主要有:string(字符串)、list(鏈表)、set(集合)、zset(有序集合)和hash(哈希類型)。redis和memcached一樣,為了保證效率,都是把數據緩存在內存中。區別是redis會周期性的把更新的數據寫入磁盤或者把修改的操作寫入追加的記錄文件,并且在此基礎上實現master-slave主從同步。

簡單的比較redis和memcached的區別,主要就是以下幾點: 1、redis不僅支持簡單的鍵值類型的數據,同時提供string、set、zset、hash等數據結構的存儲。 2、redis支持數據的備份,即 master-slave模式的數據備份。 3、redis支持數據的持久化,可以將內存中的數據保持在磁盤中,重啟的時候可以再次加載進行使用。

接下來介紹redis+mysql架構的搭建: 環境:紅帽6.5、虛擬主機VM1 ip=172.25.10.8

一:在虛擬主機上的安裝redis:

yum install -y gcc gcc-c++ ;安裝編譯軟件

cd redis/

tar -zxf redis-3.0.2.tar.gz ;解壓軟件包

cd redis-3.0.2 ;進入解壓的目錄

make ---> #make install ;直接編譯并且安裝

cd utils/ ;進入此util目錄,執行下面的腳本。配置并啟動程序

./install_server.sh

搭建redis+mysql架構的詳細步驟

netstat -antlpe | grep redis ;可以查看redis使用的端口號為6379

redis-cli ;redis客戶端的使用命令

ste no1 1234 ;將鍵no1添加鍵值1234; get no1 ;獲得no1的鍵值;

二、介紹redis作mysql的緩存云服務器。 1、安裝lnmp環境,安裝以下軟件包:

yum install -y mysql-server ;安裝mysql數據庫

yum install -y nginx-1.8.0-1.el6.ngx.x86_64.rpm php-* ;安裝nginx和php

vim /etc/php.ini ;編輯php的配置文件,修改時區

搭建redis+mysql架構的詳細步驟

vim /etc/php-fpm.d/www.conf ;修改php-fpm 用戶和組為nginx,默認為apache

搭建redis+mysql架構的詳細步驟

/etc/init.d/php-fpm start ;啟動php-fpm服務

netstat -antlpe ;查看php-fpm端口號9000;

/etc/init.d/nginx start ;啟動nginx服務;

cd /usr/share/nginx/html/ ;進入默認發布目錄,編寫php 測試頁面

vim index.php

<?php 

Phpinfo()

?>

vim /etc/nginx/conf.d/default.conf ;編寫nginx的默認配置文件;打開php模塊,

搭建redis+mysql架構的詳細步驟


搭建redis+mysql架構的詳細步驟

/etc/init.d/nginx restart ;重新啟動nginx服務;

創建php 測試頁面;

搭建redis+mysql架構的詳細步驟

vim index.php

<?php $redis = new Redis(); $redis->connect('127.0.0.1',6379) or die ("could net connect redis server"); $query = "select * from test limit 9"; for ($key = 1; $key < 10; $key++) { if (!$redis->get($key)) { $connect = mysqlconnect('127.0.0.1','redis','westos'); mysqlselectdb(test); $result = mysqlquery($query); //如果沒有找到$key,就將該查詢sql 的結果緩存到redis while ($row = mysqlfetchassoc($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 "
"; } ?>

/etc/init.d/mysqld start ;啟動數據庫,

安裝php的redis擴展; 材料:phpredis-master.zip

unzip phpredis-master.zip ;解壓軟件包

cd phpredis-master

phpize ;進行配置編譯安裝

./configure

make ----># make install

cd /usr/lib64/php/modules/ ;進入php的模塊目錄;

cp /etc/php.d/mysql.ini /etc/php.d/redis.ini ;拷貝mysql.ini為redis.ini;

vim /etc/php.d/redis.in ;修改模塊內容,其實就是添加redis.so 模塊;

extension=redis.so

/etc/init.d/php-fpm reload ;php-fpm從新導入功能模塊;

在數據庫中添加測試用test.sql.

mysql < test.sql

mysql

select * from test; update test set name="westos" where id=1;


   在FIREFOX中輸入master的ip進入頁面,查看測試結果變化;進行驗證數據從哪里讀到,第一應該是從數據庫中讀到,刷新一次數據緩存在redis中,所以數據應該是從redis中讀到;但是如果在數據庫中更新了相關的數據,而redis中緩存的數據卻無法及時更新,因為redis中任然有對應的KEY,數據就不會更新,這是一個缺陷,接下來就要通過mysql觸發器將改變的數據同步到redis中。

搭建redis+mysql架構的詳細步驟           搭建redis+mysql架構的詳細步驟

三、數據庫與redis數據同步: 配置gearman實現數據同步:Gearman 是一個支持分布式的任務分發框架, Gearman Job Server:Gearman 核心程序,需要編譯安裝并以守護進程形式運行在后臺。 Gearman Client:可以理解為任務的請求者。 Gearman Worker:任務的真正執行者,一般需要自己編寫具體邏輯并通過守護進程方式 運行,Gearman Worker 接收到Gearman Client 傳遞的任務內容后,會按順序處理。 大致流程:下面要編寫的mysql 觸發器,就相當于Gearman 的客戶端。修改表,插入表就相當于直接 下發任務。然后通過libmysqludfjson UDF庫函數將關系數據映射為JSON 格式,然后 在通過gearman-mysql-udf插件將任務加入到Gearman的任務隊列中,最后通過 redis_worker.php,也就是Gearman 的worker 端來完成redis 數據庫的更新。

yum install -y libgearman-devel-1.1.8-2.el6.x8664.rpm libgearman-1.1.8-2.el6.x8664.rpm libevent-* ;安裝gearman軟件包及依賴包;

yum install -y gearmand-1.1.8-2.el6.x86_64.rpm

/etc/init.d/gearmand start ;啟動geaman服務;

tar -zxf gearman-1.1.2.tgz ;安裝php的gearman擴展

cd gearman-1.1.2

phpize

./configure

make -----> # make install ;源碼編譯安裝三部曲;

cd /usr/lib64/php/modules/ --> gearman.so ;在此進入php功能模塊文件

cd /etc/php.d/

cp redis.ini gearman.ini ;如上添加redis功能模塊一樣,在這添加gearman功能模塊,

vim gearman.ini

extension=gearman.so

php -m | grep gearman ;查看gearman功能模塊是否添加上

安裝libmysqludfjson: libmysqludfjson UDF庫函數將關系數據映射為JSON格式。而通常將數據映射為JSON格式是通過程序來轉換的。

yum install -y mysql-devel ;安裝mysql-devle軟件依賴項

cd /root/redis/

unzip libmysqludfjson-master.zip

cd libmysqludfjson-master

gcc $(mysqlconfig --cflags) -shared -fPIC -o libmysqludfjson.so libmysqludfjson.c ;將libmysqludfjson.c編譯輸出為libmysqludf_json.so

mysql ;查看mysql的模塊目錄;

show global variables like 'plugin_dir';

cp libmysqludfjson.so /usr/lib64/mysql/ ;拷貝libmysqludfjson.so 模塊

mysql ;注冊UDF 函數

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

>select * from mysql.func;             ;查看注冊的函數;

搭建redis+mysql架構的詳細步驟


安裝gearman-mysql-udf,這個插件是用來管理調用Gearman 的分布式的隊列。

tar -zxf gearman-mysql-udf-0.6.tar.gz

cd gearman-mysql-udf-0.6

./configure --libdir=/usr/lib64/mysql/plugin ;編譯安裝

make -----> #make install

> create function gman_do_background returns string soname 'libgearman_mysql_udf.so';   ;注冊UDF函數;


> create function gman_servers_set returns string soname 'libgearman_mysql_udf.so';


> select * from mysql.func;           ;查看函數

搭建redis+mysql架構的詳細步驟

cd  ~/redis/

vim test.sql

mysql

> show triggers from test;

>select gman_servers_set('127.0.0.1:4730');        ;指定gearman的服務信息,

編寫mysql 觸發器(根據實際情況編寫)

vim test.sql

use test; DELIMITER $$ CREATE TRIGGER datatoredis AFTER UPDATE ON test FOR EACH ROW BEGIN SET @RECV=gmandobackground('syncToRedis', json_object(NEW.id as id, NEW.name as name)); END$$ DELIMITER ;

mysql < test.sql

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

搭建redis+mysql架構的詳細步驟

編寫gearman的worker端:

vim worker.php

<?php $worker = new GearmanWorker(); $worker->addServer(); $worker->addFunction('syncToRedis', 'syncToRedis'); $redis = new Redis(); $redis->connect('127.0.0.1', 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); #這條語句就是將id 作KEY 和 name 作VALUE 分開存儲,需要和前面寫的php 測試代碼的存取一致。 } ?>

nohup php worker.php & ;后臺運行worker

更新mysql中的數據,mysql 更新數據庫內容,redis就會立即更新緩存的數據。可以直接驗證。


搭建redis+mysql架構的詳細步驟       搭建redis+mysql架構的詳細步驟

看完搭建redis+mysql架構的詳細步驟這篇文章后,很多讀者朋友肯定會想要了解更多的相關內容,如需獲取更多的行業信息,可以關注我們的行業資訊欄目。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

东平县| 通渭县| 噶尔县| 叶城县| 分宜县| 哈尔滨市| 文山县| 建宁县| 阳曲县| 三河市| 博白县| 汉阴县| 玉环县| 邻水| 文安县| 湛江市| 江口县| 江达县| 昆山市| 霍山县| 定南县| 唐河县| 临安市| 泰来县| 白河县| 丹江口市| 乐至县| 巢湖市| 丹阳市| 麦盖提县| 聂拉木县| 津市市| 洞头县| 清原| 博兴县| 石景山区| 萨嘎县| 开鲁县| 余庆县| 平利县| 金湖县|