欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

redis統(tǒng)計APP在線人數(shù)的實例

 更新時間:2020年11月24日 11:16:16   作者:宛十八  
這篇文章主要介紹了redis統(tǒng)計APP在線人數(shù)的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

最近有個需求,需要統(tǒng)計APP的在線人數(shù),其實以前也統(tǒng)計過,采取的是上線發(fā)送一個請求$this->cache->incr()加1,下線的時候$this->cache->decr()減1,可是這樣做的后果是,發(fā)現(xiàn)在線人數(shù)錯的離譜,幾千人同是在線。

why?原來APP端如果卸載的時候,那么就不會發(fā)請求,還有如果非正常終止的時候,也不會發(fā)送下線請求?

于是乎找一個準備的統(tǒng)計方式

1:客戶端十分鐘發(fā)送一次請求,帶上序列號,服務器端set('前綴.序列號',過期時間),然后服務器端統(tǒng)計 keys 前綴*

可是你看keys之后的數(shù)據(jù)格式:

var_dump(); 

array (size=2)
 0 => string 'c_001dddddddddddddddddddddddddddddddd' (length=37)
 1 => string 'c_001ddddddddddddddddddddddddddddddddd' (length=38)
 print_r();
 Array( [0] => c_001dddddddddddddddddddddddddddddddd [1] => c_001ddddddddddddddddddddddddddddddddd)

數(shù)據(jù)keys *之后數(shù)據(jù)格式亂糟糟的,不是數(shù)組,根本沒有辦法處理。也許可以把他看成一個文件,然后正則匹配,再出處理,可是這樣有多慢呢,keys *本來就有些慢,還存入文件,正則匹配,然后循環(huán),獲取數(shù)組長度,就更加慢了。

keys *之后出來是列表吧,更本不是數(shù)字,redis也沒有這種獲取某個特殊的鍵前綴的數(shù)量的函數(shù)。

如果APP就一個的話,大家可以把這個鍵值存儲到一個庫里面,然后用dbsize()直接獲取庫數(shù)量,這個庫不存儲其他的鍵值。

可是現(xiàn)在我要統(tǒng)計六個APP的在線情況,不可能一個APP存儲一個庫吧

2:利用序列,

$date = date("Ymdh",time()); $this->_cache->sadd($date.$head,$client,7200);

獲取當前時間,之后加上客戶端類型前綴,作為鍵,存入序列,本次方法是一個小時存取一次,就是一個小時之內的都算在線人數(shù),具體多久算在線人數(shù),大家可以自我把握。

存的時候:

$date = date("Ymdh",time());

$this->_cache->sadd($date.$head,$client,7200);//存入集合 1個小時存入一次

取數(shù)量的時候

$date = date("Ymdh",time());//當前時間
$hour = date("Ymdh",time()-3600);//上一個小時時間
$score = date("i",time());//當前時間分數(shù)
$datedata= $this->_cache->scard($date.$head);//這個小時數(shù)量
$hourdata= $this->_cache->scard($hour.$head);//上個小時數(shù)量
if($score == '00'){
 $online = $hourdata;//如果當前時間是整點,那么一個小時人數(shù),就是上個小時人數(shù)
}else{
 $online = intval(((60-$score)/60)*$hourdata)+ $datedata;//如果不是整點,那么計算當前多少分鐘,當前的數(shù)量,加上上個小時比例數(shù)量 湊夠一個小時數(shù)量
}

$online就是在線數(shù)量

補充知識:redis命中率計算

redis提供了INFO這個命令,能夠隨時監(jiān)控服務器的狀態(tài),只用telnet到對應服務器的端口,執(zhí)行命令即可:

telnet localhost 6379

info

在輸出的信息里面有這幾項和緩存的狀態(tài)比較有關系:

keyspace_hits:14414110
keyspace_misses:3228654
used_memory:433264648
expired_keys:1333536
evicted_keys:1547380

通過計算hits和miss,我們可以得到緩存的命中率:14414110 / (14414110 + 3228654) = 81% ,一個緩存失效機制,和過期時間設計良好的系統(tǒng),命中率可以做到95%以上

有個ruby gem叫redis-stat,它利用INFO命令展現(xiàn)出更直觀的信息報表,推薦:

https://github.com/junegunn/redis-stat

以上這篇redis統(tǒng)計APP在線人數(shù)的實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • java打印出菱形圖案實例詳解

    java打印出菱形圖案實例詳解

    在本篇文章里小編給大家分享的是關于java打印出菱形圖案實例詳解,需要的朋友們可以學習下。
    2020-02-02
  • Java實現(xiàn)簡單的掃雷圖

    Java實現(xiàn)簡單的掃雷圖

    這篇文章主要為大家詳細介紹了Java實現(xiàn)簡單的掃雷圖,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • SpringBoot集成Lettuce客戶端操作Redis的實現(xiàn)

    SpringBoot集成Lettuce客戶端操作Redis的實現(xiàn)

    本文主要介紹了SpringBoot集成Lettuce客戶端操作Redis的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-11-11
  • Spring boot2X Consul如何使用Feign實現(xiàn)服務調用

    Spring boot2X Consul如何使用Feign實現(xiàn)服務調用

    這篇文章主要介紹了spring boot2X Consul如何使用Feign實現(xiàn)服務調用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • Java實現(xiàn)將文件或者文件夾壓縮成zip的詳細代碼

    Java實現(xiàn)將文件或者文件夾壓縮成zip的詳細代碼

    這篇文章主要介紹了Java實現(xiàn)將文件或者文件夾壓縮成zip的詳細代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-11-11
  • Java 遞歸查詢部門樹形結構數(shù)據(jù)的實踐

    Java 遞歸查詢部門樹形結構數(shù)據(jù)的實踐

    本文主要介紹了Java 遞歸查詢部門樹形結構數(shù)據(jù)的實踐,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • IDEA常量字符串過長問題及解決方案

    IDEA常量字符串過長問題及解決方案

    在編譯Java項目時遇到“常量字符串過長”錯誤,可以通過修改編譯器設置解決,具體方法是進入IDE的設置(File>>Settings>>Build, Execution, Deployment>>Compiler>>Java Compiler),將使用的編譯器更改為Eclipse,如果問題依舊
    2024-10-10
  • 詳解springboot 使用c3p0數(shù)據(jù)庫連接池的方法

    詳解springboot 使用c3p0數(shù)據(jù)庫連接池的方法

    本篇文章主要介紹了springboot 使用c3p0數(shù)據(jù)庫連接池的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • 一個依賴搞定?Spring?Boot?接口防盜刷的流程分析

    一個依賴搞定?Spring?Boot?接口防盜刷的流程分析

    kk-anti-reptile 是適用于基于 spring-boot 開發(fā)的分布式系統(tǒng)的反爬蟲組件,這篇文章主要介紹了一個依賴搞定?Spring?Boot?接口防盜刷,需要的朋友可以參考下
    2022-06-06
  • 利用反射實現(xiàn)Excel和CSV 轉換為Java對象功能

    利用反射實現(xiàn)Excel和CSV 轉換為Java對象功能

    將Excel或CSV文件轉換為Java對象(POJO)以及將Java對象轉換為Excel或CSV文件可能是一個復雜的過程,但如果使用正確的工具和技術,這個過程就會變得十分簡單,在本文中,我們將了解如何利用一個Java反射的庫來實現(xiàn)這個功能,需要的朋友可以參考下
    2023-11-11

最新評論