好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > Redis的使用模式之計數器模式實例

Redis的使用模式之計數器模式實例

熱門標簽:江西南昌百應電話機器人 400電話從哪里申請濱州 天音通信電話機器人 hbuilder地圖標注 隨州營銷電話機器人怎么樣 400電話申請怎么看 高德地圖標注商家在哪 杭州400電話如何申請的 機器人電話機創意繪畫

Redis 是目前 NoSQL 領域的當紅炸子雞,它象一把瑞士軍刀,小巧、鋒利、實用,特別適合解決一些使用傳統關系數據庫難以解決的問題。打算寫一系列 Redis 使用模式的文章,深入總結介紹 Redis 常見的使用模式,以供大家參考。

常見匯總計數器

匯總計數是系統常見功能,比如網站通常需要統計注冊用戶數,網站總瀏覽次數等等。 使用 Redis 提供的基本數據類型就能實現匯總計數器,通過 incr 命令實現增加操作。

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

復制代碼 代碼如下:

 # 獲取注冊用戶數
  get total_users
  # 注冊用戶數增加一位
  incr total_users

按時間匯總的計數器

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

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

復制代碼 代碼如下:

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

為計數器設置一個 48 小時的過期時間是為了節省計數器占用空間,畢竟 redis 是內存數據庫,可以在過期前執行一個任務把計數器存入關系數據庫。

速度控制

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

復制代碼 代碼如下:

 # 每秒最大請求數
  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 數據類型維護大量計數器

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

比如,對應論壇主題查看計數,可以由模式

復制代碼 代碼如下:

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

轉換為模式:

復制代碼 代碼如下:

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

總結:利用 Redis 實現計數器,可以簡單高效實現各種計數功能。

您可能感興趣的文章:
  • Redis實現唯一計數的3種方法分享
  • redis實現計數器-防止刷單方法介紹
  • Redis實現高并發計數器
  • Spring之借助Redis設計一個簡單訪問計數器的示例
  • PHP基于redis計數器類定義與用法示例
  • Docker 部署 SpringBoot 項目整合 Redis 鏡像做訪問計數示例代碼
  • redis通過位圖法記錄在線用戶的狀態詳解
  • Redis精確去重計數方法(咆哮位圖)

標簽:保定 沈陽 葫蘆島 石嘴山 招商 常德 昆明 鶴崗

巨人網絡通訊聲明:本文標題《Redis的使用模式之計數器模式實例》,本文關鍵詞  Redis,的,使用,模式,之,計數器,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Redis的使用模式之計數器模式實例》相關的同類信息!
  • 本頁收集關于Redis的使用模式之計數器模式實例的相關信息資訊供網民參考!
  • 推薦文章