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

溫馨提示×

溫馨提示×

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

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

redis聊天室防刷屏

發布時間:2020-08-04 09:46:23 來源:網絡 閱讀:404 作者:梁十八 欄目:關系型數據庫

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


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

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

redis聊天室防刷屏

redis聊天室防刷屏

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

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

redis聊天室防刷屏


讀取刷屏限制的剩余時間

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

? 如果沒有,則返回None 。

1. 設置查詢限制刷屏時間的方法
對應的方法為get_ nick_ msg_ expire_ time() 。完善以后的代碼如下:

redis聊天室防刷屏

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

redis聊天室防刷屏

向AI問一下細節

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

AI

罗甸县| 兴山县| 新邵县| 高碑店市| 伊宁市| 荃湾区| 牟定县| 兰考县| 保德县| 东安县| 五台县| 高密市| 古田县| 宾阳县| 衡水市| 诏安县| 宜都市| 剑川县| 林西县| 永修县| 德兴市| 民县| 光山县| 泸溪县| 新安县| 仁寿县| 十堰市| 寿宁县| 英吉沙县| 滦南县| 育儿| 罗平县| 乐清市| 巴里| 台南市| 易门县| 偏关县| 通山县| 高清| 鸡东县| 安仁县|