真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Redis的使用模式之計數(shù)器模式實例-創(chuàng)新互聯(lián)

轉(zhuǎn)載于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/123.html?1455853785

為華亭等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及華亭網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站制作、網(wǎng)站設(shè)計、華亭網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

Redis 是目前 NoSQL 領(lǐng)域的當(dāng)紅炸子雞,它象一把瑞士***,小巧、鋒利、實用,特別適合解決一些使用傳統(tǒng)關(guān)系數(shù)據(jù)庫難以解決的問題。打算寫一系列 Redis 使用模式的文章,深入總結(jié)介紹 Redis 常見的使用模式,以供大家參考。

常見匯總計數(shù)器

匯總計數(shù)是系統(tǒng)常見功能,比如網(wǎng)站通常需要統(tǒng)計注冊用戶數(shù),網(wǎng)站總瀏覽次數(shù)等等。 使用 Redis 提供的基本數(shù)據(jù)類型就能實現(xiàn)匯總計數(shù)器,通過 incr 命令實現(xiàn)增加操作。

比如注冊用戶數(shù),基本操作命令如下:

代碼如下:

 # 獲取注冊用戶數(shù)
 get total_users
 # 注冊用戶數(shù)增加一位
 incr total_users

按時間匯總的計數(shù)器

通常計數(shù)還要按時間統(tǒng)計,比如注冊用戶數(shù)需要按日統(tǒng)計,處理方法比較簡單,把日期帶入計數(shù)器 key 就可以。

還是注冊用戶計數(shù)的例子,基本操作命令如下:

代碼如下:

# 假定操作 2014-07-06 數(shù)據(jù)
 # 獲取注冊用戶數(shù)
 get total_users:2014-07-06
 # 2014-07-06 注冊用戶數(shù)增加一位
 incr total_users:2014-07-06
 # 設(shè)置 48 小時過期時間 172800 = 48 * 60 * 60
 expire total_users:2014-07-06 172800

為計數(shù)器設(shè)置一個 48 小時的過期時間是為了節(jié)省計數(shù)器占用空間,畢竟 redis 是內(nèi)存數(shù)據(jù)庫,可以在過期前執(zhí)行一個任務(wù)把計數(shù)器存入關(guān)系數(shù)據(jù)庫。

速度控制

速度控制也是 Redis 一種常見的計數(shù)用途,比如有一個 API 服務(wù),希望控制每一個 IP 每秒請求數(shù)不超過 10 次,可以用 IP 和 時間秒作為 key 設(shè)置一個計數(shù)器,實現(xiàn)控制,偽代碼如下所示:

代碼如下:

 # 每秒大請求數(shù)
 MAX_REQUESTS_PER_SECOND = 10

 # 檢查 ip 請求限制
 # @param ip
 # @raise 超過限制,拋出 RuntimeError 異常

 def check_request_limitation_for_ip(ip)
   time_tick = Time.now.to_i
   key = "#{ip}:#{time_tick}"
   num = $redis.get(key).to_i
   if num > MAX_REQUEST_PER_SECOND
     raise 'too many requests'
   else
     $redis.incr(key)
     $redis.expire(key, 10)
   end
 end

使用 Hash 數(shù)據(jù)類型維護(hù)大量計數(shù)器

有時候需要維護(hù)大量計數(shù)器,比如每一個論壇主題的查看數(shù),比如每一個用戶訪問頁面次數(shù),因為論壇主題和用戶基數(shù)可能很大,直接基于論壇主題或用戶 ID 生成計數(shù)器的話,占用 Redis 資源還是相當(dāng)可觀的,這時可以用 Hash 數(shù)據(jù)類型壓縮所需資源。

比如,對應(yīng)論壇主題查看計數(shù),可以由模式

代碼如下:

 key: topic::views
 value: view count (integer)

轉(zhuǎn)換為模式:

代碼如下:

 key: topic:views
 value: hash
   hash key:
   hash value: view count (integer)

總結(jié):利用 Redis 實現(xiàn)計數(shù)器,可以簡單高效實現(xiàn)各種計數(shù)功能

另外有需要云服務(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ù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


網(wǎng)站標(biāo)題:Redis的使用模式之計數(shù)器模式實例-創(chuàng)新互聯(lián)
網(wǎng)頁網(wǎng)址:http://weahome.cn/article/pijcj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部