本次的文章介紹的是關(guān)于redis集群的實現(xiàn)及使用php進行調(diào)用,給大家分享一下,有需要的朋友可以參考一下
一、搭建redis集群
1.概念解釋
redis 3.0之后版本支持redis-cluster集群,Redis-Cluster采用無中心結(jié)構(gòu),每個節(jié)點保存數(shù)據(jù)和整個集群狀態(tài),每個節(jié)點都和其他所有節(jié)點連接。其redis-cluster架構(gòu)圖如下:
? ?其結(jié)構(gòu)特點:
?1、所有的redis節(jié)點彼此互聯(lián)(PING-PONG機制),內(nèi)部使用二進制協(xié)議優(yōu)化傳輸速度和帶寬。 ?2、節(jié)點的fail是通過集群中超過半數(shù)的節(jié)點檢測失效時才生效。 ?3、客戶端與redis節(jié)點直連,不需要中間proxy層.客戶端不需要連接集群所有節(jié)點,連接集群中任何一個可用節(jié)點即可。 ?4、redis-cluster把所有的物理節(jié)點映射到[0-16383]slot上(不一定是平均分配),cluster?負責維護nodeslotvalue。 ?5、Redis集群預(yù)分好16384個桶,當需要在?Redis?集群中放置一個?key-value?時,根據(jù)?CRC16(key)?mod?16384的值,決定將一個key放到哪個桶中。
現(xiàn)在我們是三個主節(jié)點分別是:A, B, C 三個節(jié)點,它們可以是一臺機器上的三個端口,也可以是三臺不同的服務(wù)器。那么,采用哈希槽 (hash slot)的方式來分配16384個slot 的話,它們?nèi)齻€節(jié)點分別承擔的slot 區(qū)間是: 節(jié)點A覆蓋0-5460; 節(jié)點B覆蓋5461-10922; 節(jié)點C覆蓋10923-16383.
看不懂,,,,
獲取數(shù)據(jù): 如果存入一個值,按照redis cluster哈希槽的算法: CRC16('key')384 = 6782。 那么就會把這個key 的存儲分配到 B 上了。同樣,當我連接(A,B,C)任何一個節(jié)點想獲取'key'這個key時,也會這樣的算法,然后內(nèi)部跳轉(zhuǎn)到B節(jié)點上獲取數(shù)據(jù)
2、Redis Cluster主從模式
redis cluster 為了保證數(shù)據(jù)的高可用性,加入了主從模式,一個主節(jié)點對應(yīng)一個或多個從節(jié)點,主節(jié)點提供數(shù)據(jù)存取,從節(jié)點則是從主節(jié)點拉取數(shù)據(jù)備份,當這個主節(jié)點掛掉后,就會有這個從節(jié)點選取一個來充當主節(jié)點,從而保證集群不會掛掉。并且如果之前的舊主節(jié)點恢復(fù)正常時。
上面那個例子里, 集群有ABC三個主節(jié)點, 如果這3個節(jié)點都沒有加入從節(jié)點,如果B掛掉了,我們就無法訪問整個集群了。A和C的slot也無法訪問。 所以我們在集群建立的時候,一定要為每個主節(jié)點都添加了從節(jié)點, 比如像這樣, 集群包含主節(jié)點A、B、C, 以及從節(jié)點A1、B1、C1, 那么即使B掛掉系統(tǒng)也可以繼續(xù)正確工作。 B1節(jié)點替代了B節(jié)點,所以Redis集群將會選擇B1節(jié)點作為新的主節(jié)點,集群將會繼續(xù)正確地提供服務(wù)。 當B重新開啟后,它就會變成B1的從節(jié)點。 不過需要注意,如果節(jié)點B和B1同時掛了,Redis集群就無法繼續(xù)正確地提供服務(wù)了。
3.redis集群的搭建
集群中至少應(yīng)該有奇數(shù)個節(jié)點,所以至少有三個節(jié)點,每個節(jié)點至少有一個備份節(jié)點,所以下面使用6節(jié)點(主節(jié)點、備份節(jié)點由redis-cluster集群確定)。
嗯,所有最少要6個redis服務(wù)。
然后啟動這6個redis服務(wù),在本機上,但要記得啟動前要進行修改配置。
port 7000 //端口7000,7002,7003 bind 10.93.84.53 //默認ip為127.0.0.1 需要改為其他節(jié)點機器可訪問的ip 否則創(chuàng)建集群時無法訪問對應(yīng)的端口,無法創(chuàng)建集群daemonize yes //redis后臺運行pidfile ./redis_7000.pid //pidfile文件對應(yīng)7000,7001,7002cluster-enabled yes //開啟集群 把注釋#去掉cluster-config-file nodes.conf //集群的配置 配置文件首次啟動自動生成 7000,7001,7002cluster-node-timeout 15000 //請求超時 默認15秒,可自行設(shè)置appendonly yes //aof日志開啟 有需要就開啟,它會每次寫操作都記錄一條日志
然后把redis源碼中的src目錄中的redis-trib.rb拷到當前路徑中來。
安裝ruby環(huán)境
yum install ruby yum install rubygems gem install redis-3.2.2.gem
查的一下本機6個redis的啟動情況
ps -ef | grep redis
最后我們使用redis-trib.rb來創(chuàng)建redis集群。使用create命令 –replicas 1 參數(shù)表示為每個主節(jié)點創(chuàng)建一個從節(jié)點,一對兩個,第一個為主第二個為從。
./redis-trib.rb create --replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006
使用redis-cli進行測試,要加得加-c參數(shù),以集群方式進行連接。
redis-cli -c
要進得加-c參數(shù),代表連接的是集群方式。
至此,redis集群搭建成功。
但是我這里只是要本機測試的6個端口,真實的話最少都是要兩臺機器的。我們怎么做安全性呢?
1.修改redis.conf把bind選項改成當前的局域網(wǎng)ip
2.配置防火墻只允許另一臺的redis服務(wù)器進行訪問,當然也要允許應(yīng)用服務(wù)器的ip進行訪問吧。。。不然程序都連不上redis服務(wù),玩毛啊。。。。
//先關(guān)掉6379(redis服務(wù)使用的端口)iptables -I INPUT -p tcp --dport 6379 -j DROP //允許192.168.1.0這個機器進行訪問本機的6379端口iptables -I INPUT -s 192.168.1.0 -p tcp --dport 6379 -j ACCEPT
二、php中連接到redis集群
首先使用php –ri redis來查看redis擴展版本。要在3.0版本之上。
參考
第二個參數(shù)只要集群中的一個節(jié)點就行了,并不需要全填上
$obj_cluster = new RedisCluster(NULL, ['127.0.0.1:6380']);echo $obj_cluster->get('name1');
搞定
相關(guān)推薦:
php實現(xiàn)查詢mysql并緩存到redis的方法
以上是redis集群的實現(xiàn)及使用php進行調(diào)用的詳細內(nèi)容。更多信息請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費脫衣服圖片

Undresser.AI Undress
人工智能驅(qū)動的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover
用于從照片中去除衣服的在線人工智能工具。

Clothoff.io
AI脫衣機

Video Face Swap
使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的代碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
功能強大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級代碼編輯軟件(SublimeText3)

用戶語音輸入通過前端JavaScript的MediaRecorderAPI捕獲并發(fā)送至PHP后端;2.PHP將音頻保存為臨時文件后調(diào)用STTAPI(如Google或百度語音識別)轉(zhuǎn)換為文本;3.PHP將文本發(fā)送至AI服務(wù)(如OpenAIGPT)獲取智能回復(fù);4.PHP再調(diào)用TTSAPI(如百度或Google語音合成)將回復(fù)轉(zhuǎn)為語音文件;5.PHP將語音文件流式返回前端播放,完成交互。整個流程由PHP主導(dǎo)數(shù)據(jù)流轉(zhuǎn)與錯誤處理,確保各環(huán)節(jié)無縫銜接。

在PHP中搭建社交分享功能的核心方法是通過動態(tài)生成符合各平臺要求的分享鏈接。1.首先獲取當前頁面或指定的URL及文章信息;2.使用urlencode對參數(shù)進行編碼;3.根據(jù)各平臺協(xié)議拼接生成分享鏈接;4.在前端展示鏈接供用戶點擊分享;5.動態(tài)生成頁面OG標簽優(yōu)化分享內(nèi)容展示;6.務(wù)必對用戶輸入進行轉(zhuǎn)義以防止XSS攻擊。該方法無需復(fù)雜認證,維護成本低,適用于大多數(shù)內(nèi)容分享需求。

要實現(xiàn)PHP結(jié)合AI進行文本糾錯與語法優(yōu)化,需按以下步驟操作:1.選擇適合的AI模型或API,如百度、騰訊API或開源NLP庫;2.通過PHP的curl或Guzzle調(diào)用API并處理返回結(jié)果;3.在應(yīng)用中展示糾錯信息并允許用戶選擇是否采納;4.使用php-l和PHP_CodeSniffer進行語法檢測與代碼優(yōu)化;5.持續(xù)收集反饋并更新模型或規(guī)則以提升效果。選擇AIAPI時應(yīng)重點評估準確率、響應(yīng)速度、價格及對PHP的支持。代碼優(yōu)化應(yīng)遵循PSR規(guī)范、合理使用緩存、避免循環(huán)查詢、定期審查代碼,并借助X

1.評論系統(tǒng)商業(yè)價值最大化需結(jié)合原生廣告精準投放、用戶付費增值服務(wù)(如上傳圖片、評論置頂)、基于評論質(zhì)量的影響力激勵機制及合規(guī)匿名數(shù)據(jù)洞察變現(xiàn);2.審核策略應(yīng)采用前置審核 動態(tài)關(guān)鍵詞過濾 用戶舉報機制組合,輔以評論質(zhì)量評分實現(xiàn)內(nèi)容分級曝光;3.防刷需構(gòu)建多層防御:reCAPTCHAv3無感驗證、Honeypot蜜罐字段識別機器人、IP與時間戳頻率限制阻止灌水、內(nèi)容模式識別標記可疑評論,持續(xù)迭代應(yīng)對攻擊。

PHP通過數(shù)據(jù)庫事務(wù)與FORUPDATE行鎖確保庫存扣減原子性,防止高并發(fā)超賣;2.多平臺庫存一致性需依賴中心化管理與事件驅(qū)動同步,結(jié)合API/Webhook通知及消息隊列保障數(shù)據(jù)可靠傳遞;3.報警機制應(yīng)分場景設(shè)置低庫存、零/負庫存、滯銷、補貨周期和異常波動策略,并按緊急程度選擇釘釘、短信或郵件通知責任人,且報警信息需完整明確,以實現(xiàn)業(yè)務(wù)適配與快速響應(yīng)。

PHPisstillrelevantinmodernenterpriseenvironments.1.ModernPHP(7.xand8.x)offersperformancegains,stricttyping,JITcompilation,andmodernsyntax,makingitsuitableforlarge-scaleapplications.2.PHPintegrateseffectivelyinhybridarchitectures,servingasanAPIgateway

Homebrew在Mac環(huán)境搭建中的核心作用是簡化軟件安裝與管理。1.Homebrew自動處理依賴關(guān)系,將復(fù)雜的編譯安裝流程封裝為簡單命令;2.提供統(tǒng)一的軟件包生態(tài),確保軟件安裝位置與配置標準化;3.集成服務(wù)管理功能,通過brewservices可便捷啟動、停止服務(wù);4.便于軟件升級與維護,提升系統(tǒng)安全性與功能性。

避免N 1查詢問題,通過提前加載關(guān)聯(lián)數(shù)據(jù)來減少數(shù)據(jù)庫查詢次數(shù);2.僅選擇所需字段,避免加載完整實體以節(jié)省內(nèi)存和帶寬;3.合理使用緩存策略,如Doctrine的二級緩存或Redis緩存高頻查詢結(jié)果;4.優(yōu)化實體生命周期,定期調(diào)用clear()釋放內(nèi)存以防止內(nèi)存溢出;5.確保數(shù)據(jù)庫索引存在并分析生成的SQL語句以避免低效查詢;6.在無需跟蹤變更的場景下禁用自動變更跟蹤,改用數(shù)組或輕量模式提升性能。正確使用ORM需結(jié)合SQL監(jiān)控、緩存、批量處理和適當優(yōu)化,在保持開發(fā)效率的同時確保應(yīng)用性能。
