redis聊天室防刷屏-創(chuàng)新互聯(lián)

本項(xiàng)目將會限制同一個昵稱發(fā)送完全相同信息的頻率。兩次完全相同的信息的發(fā)送時間間隔不少于120 秒。

目前創(chuàng)新互聯(lián)公司已為上1000+的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)站空間、網(wǎng)站托管維護(hù)、企業(yè)網(wǎng)站設(shè)計(jì)、梨林網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

1. 理解限制刷屏的原理
Redis 天然就具有實(shí)現(xiàn)這一功能的能力。在Redis 中, Key 可以設(shè)置過期時間。時間到了后
Red is 會自動刪除這個Key 。
那么如果設(shè)置一個字符串呢?Key為:“昵稱-發(fā)言內(nèi)容",例如“ 青南-我在灌水",然后把這個Key的過期時間設(shè)置為120秒。這個字符串的值無所謂,隨便設(shè)置為什么都可以。那么:如果要這個Key在Redis中,則說明這個用戶昵稱在120秒內(nèi)己經(jīng)發(fā)送過這條信息了: 如果這個Key不在Redis中,則說明這個用戶從來沒有發(fā)送過這條信息,或者發(fā)送己經(jīng)超過了兩分鐘,Key被Redis自動刪除了。
而且,Redis可以使用“ 時”命令查詢一個Key的過期時間還剩多少秒,這樣還可以實(shí)現(xiàn)提醒功能。

2. 實(shí)現(xiàn)限制刷屏的方法
設(shè)置Key 的過期時間的方法為set_nick_msg_expire_time(),修改代碼如下:

redis聊天室防刷屏

redis聊天室防刷屏

其中,主要代碼說明如下:

? 第13行代碼:先把信息轉(zhuǎn)換為MD5 。這樣做的好處是:縮短信息的長度,避免太長以致于導(dǎo)出超出Redis Key的限制。
? 第14行代碼:把用戶昵稱與消息的MD5值拼成一個長字符串,作為Key 。
? 第15行代碼:在Redis中設(shè)定一個字符串, Key為“昵稱+消息的MD5 值”,值為1;通過ex 參數(shù)設(shè)定過期時間為120 ,過期時間一到Redis就會刪除這個Key
修改后的代碼如圖6-20 所示。

redis聊天室防刷屏

讀取刷屏限制的剩余時間

當(dāng)用戶要發(fā)送新內(nèi)容時,網(wǎng)站先檢查Red is 是否有“昵稱+新信息MD 5 值”這個Key 。
? 如果有,則說明用戶在120 秒內(nèi)發(fā)送了相同的內(nèi)容。此時返回解除刷屏限制的剩余時間。

? 如果沒有,則返回None 。

1. 設(shè)置查詢限制刷屏?xí)r間的方法
對應(yīng)的方法為get_ nick_ msg_ expire_ time() 。完善以后的代碼如下:

redis聊天室防刷屏

其中,主要代碼說明如下。
? 第1 6 行代碼: 獲得消息的MD5 值。
? 第17 行代碼:把昵稱與消息的M D5 值拼成一個Key 。
? 第18 行代碼:使用Redis的“ 時”命令檢查Key的剩余時間。如果Key不存在,則返回None ;如果Key 沒有過期時間,返回-1 ; 如果Key有過期時間,返回剩余時間(正整數(shù))。
修改后的代碼如圖6 - 21 所示。

redis聊天室防刷屏

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

網(wǎng)頁名稱:redis聊天室防刷屏-創(chuàng)新互聯(lián)
當(dāng)前網(wǎng)址:http://muchs.cn/article20/dddjco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、電子商務(wù)全網(wǎng)營銷推廣、定制開發(fā)網(wǎng)站導(dǎo)航、軟件開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)