今日,大哥讓我查下項目的在線用戶量,聽到這個消息頓時懵逼了,在線用戶量,這個該怎么查????想到項目中的登陸用戶緩存信息Token都存放在Redis中,是不是可以根據Redis中Token的個數大致估出來項目的在線用戶量,用戶登錄是有有效期的(七小時有效、三天免登陸等),因此,我們可以根據Redis中Key值的有效期來大致歸納用戶的時段在線量,話不多說,上代碼:
1 # 添加redis模塊引用 2 import redis 3 4 5 def search_key(): 6 7 # 創建Redis連接池 8 # host:連接主機 9 # port:端口號,默認6379 10 # db:數據庫,默認0-15 11 pool = redis.ConnectionPool(host='localhost', port=6379, db=14) 12 13 # 從連接池中獲取一個連接 14 r = redis.StrictRedis(connection_pool=pool) 15 16 # 獲取redis中keys的個數,我在redis的這個庫里只存放用戶的登陸token信息,不存放別的信息,不需要篩選 17 # 如果redis庫中還存放着其他信息,需要在此篩選, 18 keys = r.keys() 19 # print(keys) 20 print('Token的總個數:', len(keys)) 21 twoHours = 0 22 threeHours = 0 23 fiveHours = 0 24 for i in range(len(keys)): 25 key = keys[i] 26 remainTime = r.ttl(key) 27 if remainTime > 7200: 28 twoHours = twoHours + 1 29 if remainTime > 10800: 30 threeHours = threeHours + 1 31 if remainTime > 18000: 32 fiveHours = fiveHours + 1 33 34 print('超過兩個小時有效:' + str(twoHours)) 35 print('超過三個小時有效:' + str(threeHours)) 36 print('超過五個小時有效:' + str(fiveHours)) 37 38 39 if __name__ == '__main__': 40 search_key()
最后的輸出是這樣的: