1. 程式人生 > 實用技巧 >python django redis 集合 實現線上人數

python django redis 集合 實現線上人數

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 )