Redis+mysql+NGINX+PHP
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還支持 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