python django redis 集合 實現線上人數
阿新 • • 發佈:2020-12-22
settings.py
CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "redis://127.0.0.1:6379/1", "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", } } }
middlewore.py
def process_request(self,request): ip=get_ip(request) # 獲取ip add_ipredis(ip) # 新增集合
# 新增集合 和獲取ip 函式
def get_ip(request): print(request,'555') if request.META.get('HTTP_X_FORWARDED_FOR'): ip = request.META.get("HTTP_X_FORWARDED_FOR") return ip else: ip = request.META.get("REMOTE_ADDR") return ip def add_ipredis(ip): count_set = get_redis_connection('default') count_set.zadd('onlines',ip,time.time()) # 存入有序集合 加入時間戳 # count_set.zadd("onlines",{ip:int(time.time())}) # 從當前時間前兩個小時到當前時間前一個小時區間進行刪除 count_set.zremrangebyscore('onlines',int(time.time())-7200,int(time.time())-3600 )