91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

武川县| 吉林市| 扎赉特旗| 元氏县| 新竹县| 若羌县| 定边县| 会同县| 新巴尔虎左旗| 巩义市| 盐山县| 陆丰市| 宣武区| 桑日县| 乌拉特前旗| 洛南县| 伊春市| 临桂县| 桐梓县| 衡水市| 同江市| 农安县| 海城市| 石家庄市| 万荣县| 红桥区| 连南| 鄂伦春自治旗| 萍乡市| 长海县| 富平县| 惠水县| 五华县| 扶余县| 中阳县| 象州县| 德令哈市| 荆州市| 梁平县| 七台河市| 民丰县|