1. 程式人生 > >Redis+mysql+NGINX+PHP

Redis+mysql+NGINX+PHP

Redis簡介 Redis+PHP+mysql環境搭建 mysql的觸發更新到Redis gearman

一 Redis

1 Redis 簡介

Redis 是完全開源免費的,遵守BSD協議,是一個高性能的key-value數據庫。
Redis 與其他 key - value 緩存產品有以下三個特點:
Redis支持數據的持久化,可以將內存中的數據保存在磁盤中,重啟的時候可以再次加載進行使用。
Redis不僅僅支持簡單的key-value類型的數據,同時還提供list,set,zset,hash等數據結構的存儲。
Redis支持數據的備份,即master-slave模式的數據備份。

2 Redis 優勢

性能極高 – Redis能讀的速度是110000次/s,寫的速度是81000次/s 。
豐富的數據類型 – Redis支持二進制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 數據類型操作。

原子 – Redis的所有操作都是原子性的,意思就是要麽成功執行要麽失敗完全不執行。單個操作是原子性的。多個操作也支持事務,即原子性,通過MULTI和EXEC指令包起來。
豐富的特性 – Redis還支持 publish/subscribe, 通知, key 過期等等特性。

3 Redis與其他key-value存儲比較

Redis有著更為復雜的數據結構並且提供對他們的原子性操作,這是一個不同於其他數據庫的進化路徑。Redis的數據類型都是基於基本數據結構的同時對程序員透明,無需進行額外的抽象。
Redis運行在內存中但是可以持久化到磁盤,所以在對不同數據集進行高速讀寫時需要權衡內存,因為數據量不能大於硬件內存。在內存數據庫方面的另一個優點是,相比在磁盤上相同的復雜的數據結構,在內存中操作起來非常簡單,這樣Redis可以做很多內部復雜性很強的事情。同時,在磁盤格式方面他們是緊湊的以追加的方式產生的,因為他們並不需要進行隨機訪問。

二 實驗環境:

軟件下載地址:
鏈接:https://pan.baidu.com/s/1VJ91A6pCLqDfbzsL2OPyXA
密碼:bu2x
技術分享圖片

1 軟件的安裝

1 安裝php並修改時區

技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
查看其是否添加了mysql模塊
技術分享圖片

2 安裝和配置NGINX模塊

技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
添加PHP主頁:
技術分享圖片
技術分享圖片

查看:
技術分享圖片

3 PHP上加載redis相關的模塊:

技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片

4 server2上安裝redis

技術分享圖片
技術分享圖片

技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片

技術分享圖片
技術分享圖片

2 配置

1 server3 端配置鏈接redis和mysql

技術分享圖片

2 server 1 端mysql 端配置:

技術分享圖片
技術分享圖片
技術分享圖片

3 測試:

技術分享圖片
技術分享圖片
後端數據庫修改數據:
技術分享圖片
技術分享圖片
前端查看:
技術分享圖片
沒有變化,由於沒有觸發更新機制,因此沒有反應:

3 配置觸發更新:

gearman 架構圖:

技術分享圖片
Gearman 是一個支持分布式的任務分發框架:
Gearman Job Server:Gearman 核心程序,需要編譯安裝並以守護進程形式運行在後臺。
Gearman Client:可以理解為任務的請求者。
Gearman Worker:任務的真正執行者,一般需要自己編寫具體邏輯並通過守護進程方式
運行,Gearman Worker 接收到Gearman Client 傳遞的任務內容後,會按順序處理。

大致流程:
下面要編寫的mysql 觸發器,就相當於Gearman 的客戶端。修改表,插入表就相當於直接
下發任務。然後通過lib_mysqludf_json UDF 庫函數將關系數據映射為JSON 格式,然後
在通過gearman-mysql-udf 插件將任務加入到Gearman 的任務隊列中,最後通過
redis_worker.php,也就是Gearman 的worker 端來完成redis 數據庫的更新。
一個Gearman請求的處理過程涉及三個角色:Client -> Job -> Worker。
Client:請求的發起者,可以是 C,PHP,Perl,MySQL UDF 等等。
Job:請求的調度者,用來負責協調把 Client 發出的請求轉發給合適的 Work。
Worker:請求的處理者,可以是 C,PHP,Perl 等等。
因為 Client,Worker 並不限制用一樣的語言,所以有利於多語言多系統之間的集成。
甚至我們通過增加更多的 Worker,可以很方便的實現應用程序的分布式負載均衡架構。

1 gearmand 的安裝:

負責接收前端gearman client 的數據,以守護進行的形式存在
技術分享圖片
技術分享圖片

2 gearman 安裝,用於php的插件,

技術分享圖片

技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
查看模塊是否安裝成功
技術分享圖片

3 配置PHP鏈接Redis:

技術分享圖片
技術分享圖片
通過指定redis服務器IP地址和端口的方式進行指定
技術分享圖片
打入後臺
技術分享圖片
將配置文件發往mysql數據所在的server1
技術分享圖片

4 安裝mysql相關配置包

1 lib_mysqludf_json UDF庫函數將關系數據映射為JSON 格式。通常,數據庫中的數據映

射為JSON 格式,是通過程序來轉換的。
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片

2 安裝gearman-mysql-udf:

這個插件是用來管理調用Gearman 的分布式的隊列。
技術分享圖片
技術分享圖片

5 修改為創建觸發器模板

技術分享圖片
技術分享圖片

6 註冊UDF函數:

技術分享圖片

7 創建觸發器並查看其狀態

技術分享圖片

8 服務端進行數據插入測試

技術分享圖片
客戶端查看是否插入成功
技術分享圖片

Redis+mysql+NGINX+PHP